2011-12-05 14 views
0

私はCocos2dでSneakyJoystickを使用していますが、ジョイスティックが指されているのと同じ方向に回転するスプライトを得ようとしています(これはトップダウンです)。ジョイスティックと一致するようにCocos2dスプライトを回転する

私はそれに直面するように回転させることができますが、フレームごとに回転が更新されるので、それは定位置にスナップします。

どのようにスプライトをジャンプすることなく、目標角度に向かってスムーズに回転させることができますか?私はCCRotateToを使ってこれを行う方法を理解することができませんでした。なぜなら、回転する角度がいつでも変更できるからです。

答えて

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

この式はどこから取得しましたか?私のコードでココスを使って作業していますが、逆さまです – user63898

0

あなたが試してみました:

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

は文字が好転する設定時間を持っていたので、あなたはそれを望んでいた場合にも、あなたは量だけあなたの時間を拡張することができ、最後の更新現在の更新との間の角度を取得します角度の

+0

私はそれをやっていますが、CCRotateがもう1つ追加されるまでにCCRotateが完了していないと、CCRotatesが互いに競合するのを止めるのは何ですか? –

関連する問題