4

だから、敵を追い越すゲームを作っています。敵を上下左右と 45 度の角度だけで移動させるのではなく、敵がプレイヤーに向かって最短の直線経路を取るようにします。これが私のコードです:

public void moveEnemy() {
    if (player.pos.x > enemy.pos.x) {
    enemy.vel.x = 3;
    }
    if (player.pos.x < enemy.pos.x) {
    enemy.vel.x = -3;
    }
    if (player.pos.y > enemy.pos.y) {
    enemy.vel.y = 3;
    }
    if (player.pos.y < enemy.pos.y) {
    enemy.vel.y = -3;
    }
    if (player.pos.x == enemy.pos.x) {
    enemy.vel.x = 0;
    }
    if (player.pos.y == enemy.pos.y) {
    enemy.vel.y = 0;
    }
}

したがって、これが行うことは、速度を基本方向に設定することです。これをより正確にするために何ができますか?

4

2 に答える 2

0
double spd=3;
double vX=player.pos.x-enemy.pos.x;
double vY=player.pos.y-enemy.pos.y;
double distance=Math.sqrt(vX*vX+vY*vY);
enemy.vel.x=vX/distance*spd;
enemy.vel.y=vY/distance*spd;

palyer の位置を指し、長さ spd のベクトルを計算します。

于 2013-10-15T15:50:54.600 に答える