-1
我使用正弦和余弦移动角色。如何做停止状态
player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;
当前的停止条件是distance < n
。但是如果速度太快,有时候角色不会停下来,并且会一直持续下去。什么是使其停止正确的地方的最佳途径?
PS:它随着鼠标点击而移动。我点击并且玩家直接移动到点击的点。
我使用正弦和余弦移动角色。如何做停止状态
player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;
当前的停止条件是distance < n
。但是如果速度太快,有时候角色不会停下来,并且会一直持续下去。什么是使其停止正确的地方的最佳途径?
PS:它随着鼠标点击而移动。我点击并且玩家直接移动到点击的点。
一个快速的解决方法是检查当前的distance
是否比前一个(前一个动画帧中的那个)短。这意味着角色正在接近目标。如果它没有接近它(当前距离实际上高于前一个距离),这意味着它已经通过它,所以它必须停止。
伪代码:
if distance < n or lastDistance<distance then
stop;
lastDistance = distance;
停止后,应查找目标位置的字符(否则,它会留在overshooted位置静态)。
编辑:如果您不介意在达到其目标前停止一下字符,您可以尝试使用取决于当前speed
的值n
。那样的话,如果角色走得快,那么当角色进入更大的区域时,角色就会停止。