나는 분대가지도 주위를 움직이는 전략 게임을 가지고 놀고 있습니다. 각 턴마다 일정량의 이동이 분대에 배정되고, 분대에 목적지가있는 경우, 목적지에 도달 할 때까지 포인트가 차례대로 적용됩니다. 실제 거리는 스쿼드가 x 또는 y 방향으로 한 위치를 움직이는 경우 한 점을 사용하지만 대각선 방향으로 움직일 경우 약 1.4 점이 사용됩니다. 분대는 실제 위치를 플로트로 유지하고, 그 다음에는 맵에서 위치를 그릴 수 있도록 반올림됩니다.x, y 좌표의 경로를 따라 정확하게 단위 이동
경로는 분대를 터치하고 끝 위치로 드래그 한 다음 펜이나 손가락을 들어 올리면 설명됩니다. (나는 지금 아이폰에서 이것을하고 있지만 안드로이드/Qt/윈도우 모바일은 똑같이 작동 할 것입니다.) 포인터가 x를 움직이면 y 포인트가 기록되어 분대는 최종 목적지까지의 중간 목적지 목록을 얻습니다. 목적지가 균등하지는 않지만 포인터 움직임의 속도에 따라 멀리 떨어질 수 있습니다. 장애물이나 지형이이 게임에서 중요하기 때문에 경로를 따라가는 것이 중요합니다. 나는 Flight Control을 다시 만들려고하고 있지는 않지만 비슷한 정비사입니다.
는 여기에 내가 뭘했는지,하지만 그것은 단지 (의사) 너무 복잡 보인다 올바른 방향입니다 물론 단순화 된 것
getDestination() {
- self.nextDestination = remove_from_array(destinations)
- self.gradient = delta y to destination/delta x to destination
- self.angle = atan(self.gradient)
- self.cosAngle = cos(self.angle)
- self.sinAngle = sin(self.angle)
}
move() {
- get movement allocation for this turn
- if self.nextDestination not valid
- - getNextDestination()
- while(nextDestination valid) && (movement allocation remains) {
- - find xStep and yStep using movement allocation and sinAngle/cosAngle calculated for current self.nextDestination
- - if current position + xStep crosses the destination
- - - find x movement remaining after self.nextDestination reached
- - - calculate remaining direct path movement allocation (xStep remaining/cosAngle)
- - - make self.position equal to self.nextDestination
- - else
- - - apply xStep and yStep to current position
- }
- round squad's float coordinates to integer screen coordinates
- draw squad image on map
}
가, 기호 같은 물건의 이동을 보장하기 위해 쥐게 될 필요가있다. trig을 사용하는 것이 가장 좋은 방법이라면 조회 테이블을 사용할 수도 있고 예전처럼 현대 장치에서 조회 테이블을 사용할 수도 있습니다.
더 좋은 방법에 대한 제안이 있으십니까?
- 업데이트가 - 아이폰은 삼각 및 상기 한 바와 어쨌든 수레에 그립니다로 구현 위치와 트랙의 수만을 추적 제로 문제가 있습니다. Bresenham 방법이 더 효율적이고 trig가 더 정확합니다. 정수 Bresenham을 사용한다면 충돌/지형 감지에 도움이되는 위치 정확도를 조금 더 유지하기 위해 10 배를 곱하려고합니다.
감사합니다. –