ai用直线追逐玩家的算法?

use*_*459 1 java algorithm path libgdx

我正在用libgdx(java)制作游戏,正方形追逐主要玩家.我无法弄清楚如何使方块以恒定速度直线移动到玩家.这意味着我希望广场每秒都行进相同的距离.我创建一个变量并将其设置为等于chasePattern1.saidvariable[0]被添加到敌人的x值,并被saidvariable[1]添加到敌人的y值.

private float[] chasePattern1(float enemy_x,float enemy_y,float speed){
    float[] returnvalue={0,0};

    if(enemy_x>mainsquare.getX()){
        returnvalue[0]=-1*speed;
    }
    if(enemy_x<mainsquare.getX()){
        returnvalue[0]=speed;///does float work?no
    }
    if(enemy_y>mousey){
        returnvalue[1]=-1*speed;
    }
    if(enemy_y<mousey){
        returnvalue[1]=speed;
    }
    return returnvalue;
}
Run Code Online (Sandbox Code Playgroud)

Orl*_*iam 6

如果d是玩家和正方形之间的距离v,你希望方块移动的速度,(x1,y1)是玩家(x0,y0)的位置,是广场的位置,那么

vx = (x1 - x0) * v / d
vy = (y1 - y0) * v / d
Run Code Online (Sandbox Code Playgroud)

在哪里vxvy每秒需要添加到方形坐标的值.

编辑:

你可以这样查看:如果你想以你的位置到达目的地d"点",速度为v,你需要t=d/v移动.

现在,你必须水平移动x1-x0的距离和垂直距离y1-y0,如果你想在t移动中移动两个距离,你需要将每个距离分成t几块,这就是每个组件的速度(xy).当你分开x1-x0t,你得到的价值相同y