2017-03-24 2 views
0

나는 A-Star 알고리즘을 사용하여 적들이 플레이어에게 내 게임에서 가려움을 찾아 공격 할 수있게하고 있습니다. 알고리즘은 Slick2D에서 제공하는 것으로, 필자의 필요에 따라 필요에 따라 코드를 제공 할 수 있습니다.A-Star 알고리즘을 개선하여 한 점이 아닌 전체 도형의 경로를 계산하는 방법은 무엇입니까?

게임은 2D와 타일 기반이지만, 동시에 두 개의 타일을 사용할 수 있다는 것을 의미하는 개체 이동에 수레를 사용합니다. 모든 적들은 히트 박스와 분명히 X와 Y 좌표를 가지고 있습니다. 적의 X와 Y 위치는 일반적으로 히트 박스의 왼쪽 상단에 있습니다. 즉, 알고리즘에 의해 결정된 경로의 원점이 히트 박스의 왼쪽 상단에 있음을 의미합니다. 지금까지 문제가 없으며 알고리즘이 작동합니다.

그러나 내가 만나는 문제는 지금 당장 나는 한 지점에 대한 경로를 결정할 뿐이며 (알고리즘의 본질에 맞춰 짐) 나는 이것에 붙어있는 전체 적중 상자를 고려하지 않고있다. 포인트. 그 적의 x/y 포인트가 왼쪽 상단에 있기 때문에 알고리즘이 그것이 하나의 타일이라고 생각할 수도 있습니다. 그러나 전체 스프라이트와 히트 박스는 여전히 하나의 타일입니다. 설명에 대한

이미지 : 그 원수의 x와 y가 어디

enter image description here

이 파란색 점 주위에 빨간색 동그라미가 표시됩니다. 분명히 흰색 장애물 위에 있습니다. 그래서 적들은 왼쪽으로 움직입니다. 현재 문제는 전체 히트 박스와 스프라이트가 아래에 있으므로 하나의 타일을 위로 이동해야하기 때문에 (블루 포인트가있는 곳에서) 장애물을 통과 할 수 없다는 것입니다.

적의 X/Y 포인트 대신에 A *의 시작점에 대한 매개 변수로 히트 박스의 중심을 사용했지만 그로 인해 더 어색한 행동이 발생했습니다.

그래서 내 A * 알고리즘은 한 지점을 사용하지만 전체 적중 상자를 사용하여 경로를 결정해야하는 솔루션이 필요합니다.

모든 조언에 감사드립니다.

답변

0

각 반복에서 다음 단계를 탐색 할 때 전체 적중 상자를 검사하여 해당 단계가 유효한지 확인하십시오.

전체 그림을 그런 식으로 움직일 수있는 단계 만 고려하십시오.

여기의 어려움은 히트 박스의 개념입니다. 때로는 1 제곱이므로 다른 때는 2 제곱입니다. 나도이 문제를 진정으로 해결할 방법을 모른다. 죄송합니다. (

아마도 가능한 한 사각형 안의 "내부"까지 이동 한 다음 다음 경로를 확인하려고하면이 부분을 직접 알아낼 수 있습니다. 이렇게하면 가능한 한 가장 적은 피해를 입을 수 있습니다. 귀하의 이동을 제한하지 않습니다.

관련 문제