【问题标题】:How can I keep a rotation count for a SKNode如何保持 SKNode 的旋转计数
【发布时间】:2014-03-03 04:34:44
【问题描述】:

我正在尝试想出一种方法来累积 SKNode 的旋转。例如,如果一个节点正在滚下一座小山(圆形物理体),我想知道它做了多少次旋转,或者一个累积的角度。我需要它在旋转一种方式时增加并减少另一种方式。

我曾想过跟踪节点的 zRotation 并在每次更新时更新计数,当它从 >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;
}

【问题讨论】:

    标签: objective-c sprite sprite-kit game-physics sknode


    【解决方案1】:

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

    【讨论】:

    • 由于zRotation值是以弧度存储的,你也可以将它除以M_2_PI
    • 这就是我所做的,我将在问题中发布我的解决方案。 akashg 关于弧度是正确的。
    • 您的计数器变量可以是弧度或度数,我只是建议使用计数器的概念并使用除法来确定完整的旋转。我选择学位是为了明确我建议的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多