我有 2 个 LWJGL 的 Vectro2f。一个用于存储玩家位置,另一个用于存储鼠标右键单击目标以供玩家移动到的位置。在提供增量时间的更新方法中,我如何缓慢地将位置 vector 点移向方向 vector 点,以使玩家移动到选择的位置?我已经尝试过这个,但这只是即时跳跃,并且每次都不会到达正确的坐标:
if(this.destination != this.position) {
this.position.setX(this.destination.x-this.position.x);
this.position.setY(this.destination.y-this.position.y);
}
最佳答案
您可以将其放入循环中:
if (destination != position){
position.setX(position.getX() + dX);
position.setY(position.getY() + dY);
}
其中 dX 和 dY 是玩家在一帧中沿 X 和 Y 方向移动的距离。 计算 dX 和 dY 的一种方法是使用三角函数:
dX = 速度 * Math.cos(theta)
其中 theta 是与水平方向(X 轴,即三角函数中的单位圆)到目的地的角度。
dY = 速度 * Math.sin(theta)
。
关于java - LWJGL Vector2f慢慢变成另一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34242751/