728x90
플레이어의 좌표 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 대신 넣어주고 bx와 by에 speed를 곱해주면 플레이어와 적의 위치랑 상관없이 탄환이 일정한 속도(speed)로 날아가게 된다.
(단, 만약 플레이어와 적의 위치가 똑같다면 탄환이 발사되지 않게 하는 등 예외 처리를 해주어야 한다)
728x90
'Unity' 카테고리의 다른 글
[Unity]이벤트(Event)로 키 입력 관리하기 (0) | 2022.06.16 |
---|---|
NCMB를 이용한 네트워크 구현2 (0) | 2022.02.25 |
NCMB를 이용한 유니티 네트워크 구현하기 (0) | 2022.02.23 |
방향탄 (0) | 2022.02.11 |