탄환

    방향탄

    방향탄

    방향탄이란 특정한 목표를 향해 날아가는 조준탄과 다르게 임의의 방향으로 날아가는 탄환을 말한다. 탄막 슈팅 게임을 예로 들면 플레이어를 향해 직접적으로 날아오는 탄환이 조준탄이고 그 외에 다른 방향으로 뿌려지는 탄환이 방향탄이다. 방향탄의 속도 벡터를(Vx, Vy), 속도를 Speed, 발사각도를 theta (θ)라고 했을 때, 탄환을 발사하는 방법은 다음과 같다. 먼저 탄환을 발사하는 오브젝트(Cannon)와 탄환(Projectile) 오브젝트를 만들어준다. Cannon에는 스크립트가 들어있다. 스페이스 바를 누를 때마다 탄환이 자식으로 생성되며 발사 각도가 누적해서 더해진다. projectile 변수에는 탄환 오브젝트를 프리팹으로 넣어주었다. 탄환에는 탄환의 움직임을 구현한 스크립트가 들어있다. 탄환..

    탄환의 속도

    플레이어의 좌표 P(px, py)와 적의 좌표 E(ex, ey)이 주어졌을 때 E을 향해 날아가는 탄환이 있다고 하자. 출발 후 n번 후에 E에 도착한다고 했을 때 탄환의 벡터 B(bx, by)는 다음과 같이 표현할 수 있다. bx = (ex - px)/n by = (ey - py)/n 그러나 이 방법을 사용할 시 플레이어와 적의 위치가 변함에 따라 탄환의 속도도 함께 변하는 문제가 있다. 이를 해결하려면 플레이어와 적의 거리를 구해주어야 한다. 적과 플레이어의 거리 d 를 구하는 공식은 d = math.sqrt((ex - px)^2 + (ey - py)^2)이며 피타고라스 정리에서 도출된 식이다. 여기서 math.sprt는 제곱근을 반환하는 C#의 메서드이다. 이제 이렇게 구한 d를 n 대신 넣어주고 ..