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;
}