-삼각함수 이용한 포신돌리기,쉴드,스크류,스토킹에너미 구현 복습-

플레이어에게서 포신을 그리기 위해서 생각해 볼 건, ‘’선’’과 ‘’회전’’이겠다.

‘’선을 플레이어의 중점에서 부터, 임의의 점까지 쭉 긋는 것이 선이라고 볼 수 있으니, 그 임의의 점을 구해보는게 좋겠다. 따라서 제공되는 구조체 중 하나인, POINT구조체를 통해서 그 점을 생각해보자.

[1].barrel이라는 POINT구조체를 선언 및 초기화를 한다.

[2]. Player클래스 Update()에서 키입력 받고, 렉트를 그려주고, Late_Update()에서 barrel의 좌표들을 삼각함수 공식을 이용해서 구해준다.

x = cos(각도) * 빗변 길이.

y = sin(각도) * 빗변 길이.

[3]. Render()함수에서, MoveToEx()와 LineTo()함수를 이용해, 선을 그려준다.

(MoveToEx() : 플레이어 중심 좌표로 좌표이동해서~)

player클래스에서 create_Bullet함수 안에, 발사 포인트를 기존의 플레이어 rect의 중점이 아닌, 포신의 좌표(x,y)에서 나가게 다시 세팅 해준다

이렇게만 하면, 일단 포신의 끝에서 총알이 발사되는데, 무조건 y—방향으로 올라쏘기 때문에 추가 조건이 필요.(Bullet클래스의 Update()에 총알의 y— 로만 되있기 때문이다)

Bullet클래스의 Update()에서도, 총알의 각도와 삼각함수 공식을 통해서, 총알의 중점좌표를 움직여 주면 되는데, 다음과 같다.

Untitled

저기서의 m_fBulletAngle이 Player클래스의 m_fAngle과 같은 각도여야 결국 같은 방향으로 쏘기 때문에, Player클래스의 Create_Bullet함수 에서 Set_Angle함수를 통해, bullet의 각도와 일치시킨다.