旋转Cocos2d精灵以匹配操纵杆

时间:2011-12-05 00:47:39

标签: ios cocos2d-iphone rotation joystick

我在Cocos2d中使用了一个SneakyJoystick,而我正试图让一个精灵旋转到与操纵杆指向相同的方向(这是自上而下)。

我可以让它旋转以面对它,但它会在每一帧左右更新旋转时捕捉到位。

如何让精灵朝目标角度平滑旋转,而不会跳到目标角度?我无法弄清楚如何用CCRotateTo做到这一点,因为旋转的角度可能随时改变。

2 个答案:

答案 0 :(得分:1)

我最终只是通过使用我所做的旋转方法来修复此问题,该方法在每次更新时以正确的方向旋转节点/精灵。

- (void)rotateNode:(CCNode*)aNode degrees:(float)targetRotation withSpeed:(float)rotationSpeed withTimeDelta:(ccTime)dt
{
    rotationSpeed = rotationSpeed * dt;

    // Convert the difference between the two angles to radians
    float diff = (targetRotation - aNode.rotation) * (M_PI / 180);
    // Find the rotation of the vector created by the sin and cos of the difference
    float rotationDifference = atan2f(sinf(diff),cosf(diff));
    // Rotate the clip accordingly
    aNode.rotation += MAX(
                         MIN(
                             (180/M_PI) * rotationDifference,rotationSpeed), -rotationSpeed
                         );
}

答案 1 :(得分:0)

你试过了吗?

[CCRotateBy actionWithDuration:0.5f angle:CC_DEGREES_TO_RADIANS(90.0f)];

获取最后一次更新当前更新之间的角度,如果你想要它,那么角色有一个设定的时间来转身,你可以按角度的数量缩放你的持续时间。