0

私はスプライトの顔を作り、それが動くときにタッチポイントをたどろうとしていますが、これまでのところ成功しています。基本的に、ユーザーが画面に触れるたびに、スプライトが回転してタッチ ポイントに向かい、そこに向かって移動します。これが私の基本的なコードです:

-(void)handlePan:(UIPanGestureRecognizer *)recognizer{

    //calculate tapPosition + angle, then rotate the sprite and move it to the tapPosition:

    [fish runAction:[CCRotateTo actionWithDuration:0 angle:angle]];
    [fish runAction:[CCMoveTo actionWithDuration:0.8 position:tapPosition]];
}

問題は、これが にあるためUIPanGesture、指が画面に触れている限り、このメソッドが常に実行されていることです。以前のアクションは常に新しいアクションによって上書きされるため、実際には回転と動きが非常に途切れ途切れになります。

滑らかで流動的ではありません。どうすればスムーズにできますか?どういうわけか私の行動や何かを遅らせる必要がありますか? どんなアイデアでも大歓迎です。ありがとう

4

2 に答える 2

4

方向や動きを絶えず変更する必要がある場合は、アクションを使用しないでください。アクションはこれには適していません。フレームごとに新しいアクションを停止/実行すると、オブジェクトがまったく移動しない場合もあります。

代わりに、オブジェクトの速度をフレームごとに計算し、その速度を位置に追加する必要があります。速度から角度(方向、別名回転)を計算することもできます。

于 2012-05-17T10:38:23.640 に答える
0

CCSequence を使用して、この 2 つのアニメーションを CCSequence オブジェクトに追加します。この CCSequence アニメーションをスプライトに追加します。

これがうまくいくことを願っています。

于 2012-05-17T10:33:22.397 に答える