我使用正弦和余弦移动角色。
player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;
当前停止条件为distance < n
。但如果速度太高,有时角色不会停下来并永远继续前进。什么是让它停在正确位置的最好方法?
PS:点击鼠标即可移动。我点击,播放器直接移动到点击的位置。
答案 0 :(得分:0)
快速解决方法是检查当前distance
是否比前一个(前一个动画帧中的那个)短。这意味着角色正在接近目标。如果它没有接近它(当前距离实际上高于前一个距离),则意味着它已经通过它,所以它必须停止。
在伪代码中:
if distance < n or lastDistance<distance then
stop;
lastDistance = distance;
停止后,您应该将角色定位在目标位置(否则,它将在超调位置保持静止)。
编辑:如果你不介意角色在达到目标之前停止一点,你可以尝试使用取决于当前n
的{{1}}值。这样,如果角色快速移动,它会在更大的区域内停止。