我有2张来自LWJGL的Vectro2f。一个用于存储玩家位置,另一个用于存储鼠标右键单击目标以供玩家移动。在提供增量时间的更新方法中,如何将位置矢量点缓慢移向方向矢量点,以使玩家移动到选择位置?我试过这个,但这只是瞬间跳转,并没有每次都去适当的坐标:
if(this.destination != this.position) {
this.position.setX(this.destination.x-this.position.x);
this.position.setY(this.destination.y-this.position.y);
}
答案 0 :(得分:1)
你可以把它放在你的循环中:
if (destination != position){
position.setX(position.getX() + dX);
position.setY(position.getY() + dY);
}
其中dX和dY是玩家在一帧中沿X和Y方向行进的数量。 计算dX和dY的一种方法是使用trig:
dX = velocity * Math.cos(theta)
其中theta是从水平方向到目的地的角度(X轴,即trig中的单位圆)。
dY = velocity * Math.sin(theta)
。