使用javascript平滑旋转问题

时间:2013-02-08 01:45:25

标签: javascript canvas html5-canvas

我已经搜遍了所有关于平滑旋转问题的解决方案。我可以得到它99%的工作,但有一个小问题一直在弄乱我。旋转工作正常,除非目标发生剧烈变化。基本的想法是,当球员接触球时他有一个球和一个球员,他改变球的方向和速度。球员正确地跟随球,但是当他接触球或球的位置被重置时,因此在角度大于45度之间的差值,球员立即跳到球的事实。这是我部分工作的代码。感谢您提前提供任何帮助。

var newFacing = Math.atan2(theBall.y-player.y,theBall.x-player.x);
var diff = (Math.abs(newFacing) - Math.abs(player.facing));
if (diff < Math.PI*0.1 && diff > -Math.PI*0.1){
    player.facing = newFacing;
}else if (diff > Math.PI) {
    player.facing -= Math.PI*0.1;
} else {
    player.facing += Math.PI*0.1;
} 
if (player.facing > Math.PI) {
    player.facing -= Math.PI*2;
} else if (player.facing < -Math.PI) {
    player.facing += Math.PI*2;
}

更新:更改了||和&amp;&amp;并添加了一个条件,以确保我不高于或低于PI弧度。在某些角度仍然存在一些奇怪的旋转问题。例如,如果球从球员下方经过,他将顺时针旋转而不是逆时针旋转。有时候球员会在再次跟踪球之前完成全程360。没有跟踪它我不知道是什么条件造成这种情况。

0 个答案:

没有答案