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

3

我要做的是创建一个随着zRotation每一帧的变化而递增/递减的变量。然后将该值除以 360 即可得到旋转量。

于 2014-03-03T05:47:09.017 回答