これはよく聞かれる質問であることは知っています。私もそれに固執し、それに関する助けを探していました。
モンスターがキャラクターに対して機能する小さなアプリケーションがあります。グリッドベースなので、上下左右に歩くことができます。マップのすべてのブロックされた領域がある配列があります。私が取得する必要があるのは、キャラクターに到達するための次のステップです(その上下左右)。たとえば、彼らが木の周りを歩いていれば素晴らしいでしょう。(配列内の単純な -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です。
それについてさらに情報が必要な場合は、お知らせください。