2012-03-24 4 views
0

원점 복귀/추적 알고리즘.원점 복귀/추적 알고리즘

나는 내 게임에서이 알고리즘을 연구 중이다. 내가 알고있는 유일한 추적은 표준입니다. X/Y 좌표를 따르십시오.

적 = 체이서

영웅 = 존재 쫓아

에서 동시에 적과 영웅 이동한다.

문제는 적을 직선으로 이동하지만 결국에는 영웅에게 직접 연결되지 않는다는 것입니다.

x = x - 5; 또는 y = y + 5;

어떻게 내가 추가/나의 영웅에 직접 적 추적을 할 빼기 어떤 값을 결정합니까 : 나는 그 때문에 내가 사용하는 상수 값의

전 생각?

거기에 수식이 있습니까? 또는 조건?

감사합니다.

동일한 게시물이 있으면 저에게 직접 문의하십시오. 고맙습니다.

+0

게임의 순서가 맞습니까? 또는 적과 영웅이 동시에 위치를 변경합니까? –

+0

동시에 위치가 변경됩니다. –

+0

다음 적을 영웅의 현재 위치를 사용할 수 없습니다 - 그것은 항상 한 걸음 뒤에있을 것입니다. 영웅이 다음 단계가 될 곳을 추측하고 대신 그 위치로 이동하십시오. –

답변

0

영웅이 (99,50), 적의 (102, 55) 인 경우 5 픽셀로 이동하므로 (97, 50), 네 영웅의 다른 쪽.

이 문제를 해결하기 위해 이동하기 전에 Hero.X와 Enemy.X의 차이점을 확인할 수 있습니다. 차이점이 5 단계에 미치지 못하는 경우 5 픽셀 전체를 이동하지 말고 그 차이 만 이동하십시오.

정확히 어떤 알고리즘을 사용하고 있는지 확실하지 않지만,이 논리를 사용하면 적들이 대각선으로 이동할 때 Sqrt (2)를 더 빨리 움직일 수 있습니다. 속도와 결합 된 방향 (각도) 사용을 고려해야합니다. 약간의 고니 오메 트리를 사용하면 조금 더 어려울 것입니다.하지만 움직임이 더 현실적입니다.

당신은 한 걸음 더 나아가서 어떤 시점에서 영웅이 있을지 예측할 수 있습니다. 그래서 적은 영웅이있는 지점으로 이동하지는 않지만 그 지점을 자르려고합니다. 조금 코너.

+0

예! 각도. 나는 체이스가 더 현실적 이길 바래. (enemyX = = heroX) {if enemyX = enemyX + 5} if (enemyX = 적 X); if (enemyX = 적 X); } if (enemyY> = heroY) {enemyY = enemyY-5;} 그러나 현실적인 움직임을 제공하지 않습니다. –