我正在尝试想出一种方法来累积 SKNode 的旋转。例如,如果一个节点正在滚下一座小山(圆形物理体),我想知道它做了多少次旋转,或者一个累积的角度。当以一种方式旋转并减少另一种方式时,我将需要它增加。
我曾想过跟踪节点的 zRotation 并在每次更新时更新计数,当它从 >0 传递到 <0 时,但这似乎很棘手,因为我必须想出某种范围来检查它可能会错过从快速旋转节点或低帧速率旋转。
任何建议都会很棒!
编辑:这是我的解决方案,它非常适合我的目的
-(void)update:(CFTimeInterval)currentTime {
//get CurrentAngle (-pi to pi)
float currentAngle = _wheelSprite.zRotation;
if (currentAngle<0) {
//change angle format (0 to M_PI*2)
currentAngle+=M_PI*2;
}
//calculate angle change
float change = currentAngle - _lastAngle;
if (change>M_PI) {
change-=2*M_PI;
}else if (change<-M_PI){
change+=2*M_PI;
}
//update last angle
_lastAngle = currentAngle;
//update actualWheelAngle
_actualWheelAngle += change;
}