1

これはよく聞かれる質問であることは知っています。私もそれに固執し、それに関する助けを探していました。

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

それについてさらに情報が必要な場合は、お知らせください。

4

1 に答える 1