0

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

1 に答える 1