我有一个汽车对象,我希望它逐渐旋转到用户单击的方向。
每一帧我都会做数学计算来计算它需要的新方向,并将其存储在 car.direction 中。实际的方向当然是在 car.rotation 中。
现在我想每帧更新旋转,直到它等于方向。但是,我尝试了一切,但不知道该怎么做。
顺便说一句,我正在使用 FireFly,这是一个建立在 Starling Framework 之上的游戏引擎,但我认为它不相关。
我有一个汽车对象,我希望它逐渐旋转到用户单击的方向。
每一帧我都会做数学计算来计算它需要的新方向,并将其存储在 car.direction 中。实际的方向当然是在 car.rotation 中。
现在我想每帧更新旋转,直到它等于方向。但是,我尝试了一切,但不知道该怎么做。
顺便说一句,我正在使用 FireFly,这是一个建立在 Starling Framework 之上的游戏引擎,但我认为它不相关。
我会接受 Marty 的建议,使用 minimumAngle 函数来确定应该旋转的方向。基本上,您可以在每次帧更新期间移动一些最小角度的百分比,直到该最小角度的百分比低于某个阈值(并让它在剩下的过程中“捕捉”)。
就像是
//each time this is called it will get 1/4 closer, but never get to 0, hence the need for a threshold avoid paradoxes
//http://en.wikipedia.org/wiki/Zeno's_paradoxes#Dichotomy_paradox
var angleToMove:Number = smallestAngle()/4; //the divide by 4 here means get 1/4 of the angle gap closer each time this function is called, I assume this is on a timer or frame handler, making the 4 greater will make it follow more slowly, making it lower will make it follow more quickly, never reduce to or below 0 unless you want wonkiness
if(angleToMove<someRadianThreshold)
angleToMove = smallestAngle();
//use angleToMove to adjust the current heading/rotation