我知道这是一个被问到很多的问题。我也坚持下去并寻求一些帮助。
我确实有一个小型Applikation,其中怪物应该为Charakter工作。它的Gridbased所以它可以向左上行走。我有一个数组,其中地图的所有阻塞区域。我需要得到的只是到达角色的下一步(左上方)。例如,如果他们在树周围走动会很棒。 (数组内部的简单-1)
是否有任何简单的解决方案或者我需要实施A *(我试过但我完全坚持这个)
我只是盯着这个:
@Override
public Status getNextMove(int posX, int posY) {
if (checkIfAggroRange(posX, posY)) {
if (checkIfBeside(posX, posY))
//turn to the character
return getIdleStatus(posX, posY);
else
//here id like to add the algo and get the value
} else {
return moveRnd();
}
}
private boolean checkIfAggroRange(int posX, int posY) {
return Math.abs(this.screen.character.mapPos.x - posX) <= range
&& Math.abs(this.screen.character.mapPos.y - posY) <= range;
}
private boolean checkIfBeside(int posX, int posY) {
return (Math.abs(this.screen.character.mapPos.x - posX) <= 1 && Math
.abs(this.screen.character.mapPos.y - posY) <= 1);
}
当它们在怪物的范围内时它已经启动了仇恨,并且还将怪物变为角色,因此它可以击中角色。
我确实通过screen.map.maparray
(int[xsize][ysize])
简化了地图。 xpos/ypos
是数组中的pos。
如果您需要更多相关信息,请告知我们。
答案 0 :(得分:4)
我建议使用A *,它使用简单的启发式方法为您提供从a到b的路径。作为一个网格你可以使用x,y坐标,然后很容易实现A *。所以我建议做的就是阅读这些2,
http://wiki.gamegardens.com/Path_Finding_Tutorial
http://www.cokeandcode.com/main/tutorials/path-finding/
这应该向你解释A *是如何工作的。第一篇文章结构合理,在尝试实现算法之前,你应该完全阅读并尝试理解。它还将为您提供解决诸如树木等障碍的想法
第二个很棒,因为实现的A *算法做得很好并且有解释所有这些的评论。这有点过于复杂,只需要2-3个课程而不是显示的数量,但它肯定会让你知道一切是如何工作的