turrettest-Default-1.0.0.0.exe


지난번에 말한 대로 이번엔 터렛을 만들어 보았습니다.

터렛은 총 3종류의 조준을 넣었습니다.


1.기본(무광택)-적을 향해 쏩니다.

2.탄막(발광)-적을 향해 쏘긴 하는데, 좀 막 쏩니다. 일종의 탄막.

3.예측(외곽선)-적의 직선 이동 경로를 예측해 쏩니다.


만약 모든 적이 터렛에 닥돌한다면 3=1>2 의 효율을 보여주겠죠.

하지만 평균적인 직선이동에서는 3>2>1의 효율을 보여줬습니다.

왜 이런 차이가 생기는 걸까요?


탄환이 적에게 도달할 시간에 적은 이미 다른 곳에 가있기 때문입니다.

일반적으로 한 자리에 고정돼있을 터렛이 노리게될 목표는 터렛 근처를 움직이는 물체입니다.

그러므로 그냥 목표를 향해 쏘는 것이 아니라 탄환이 날아갈 시간동안 목표가 이동하는 것까지 계산하여 목표가 도달할 예상 위치를 향해 쏴야 합니다.


동영상을 보시면 그것만으로도 효율이 크게 차이나는걸 알 수 있습니다.

그럼 타겟의 도달 위치를 예측하려면  뭘 알아야 할까요?

1.타겟의 현재 위치

2.타겟의 속도

3.타겟의 이동 방향

4.탄환의 속도

5.타겟와 터렛의 거리 


타겟의 위치+(타겟과의 거리/탄환의 속도*타겟의 속도*타겟의 이동 방향)에 쏘게 하시면

됩니다.


게임메이커 함수로 표현하자면 방향을 다음과 같이 잡으면 됩니다(whe1은 타겟의 id)

point_direction(x,y,whe1.x+distance_to_object(whe1)/20*whe1.speed*sin(degtorad(whe1.direction+90)),whe1.y+distance_to_object(whe1)/20*whe1.speed*cos(degtorad(whe1.direction+90)))


+90이 들어가는 이유는 게임메이커에서의 0도와 삼각함수의 0도가 다르기 때문입니다.

20은 탄환의 속도입니다.


Q:그래서 어쩌라고?

A:음.... 다음에는 물 구현하기를 해볼까요?

Posted by MPMaker