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)
如果d是玩家和正方形之间的距离v,你希望方块移动的速度,(x1,y1)是玩家(x0,y0)的位置,是广场的位置,那么
vx = (x1 - x0) * v / d
vy = (y1 - y0) * v / d
Run Code Online (Sandbox Code Playgroud)
在哪里vx和vy每秒需要添加到方形坐标的值.
你可以这样查看:如果你想以你的位置到达目的地d"点",速度为v,你需要t=d/v移动.
现在,你必须水平移动x1-x0的距离和垂直距离y1-y0,如果你想在t移动中移动两个距离,你需要将每个距离分成t几块,这就是每个组件的速度(x和y).当你分开x1-x0时t,你得到的价值相同y