ランダムなパスを作成し、スプライトをたどらせるにはどうすればよいですか?
パスの終わりに到達するとすぐに、一時停止して新しいパスを開始し、必要に応じて複数のパスを作成しますか?
画面上でランダムな座標を生成して CCMoveTo を使用することを考えていましたが、それは直線になり、退屈になります。飛び回る昆虫の行動を再現したいと思います。誰かが私を正しい方向に向けることができますか?
2 に答える
0
CCBeizierTo
またはCCBezierBy
、たとえば次のように使用できます。
#define randomPoint ccp(CCRANDOM_0_1()*[[CCDirector sharedDirector] winSize].width,CCRANDOM_0_1()*[[CCDirector sharedDirector] winSize].height)
ccBezierConfig bezier;
bezier.controlPoint_1 = randomPoint;
bezier.controlPoint_2 = randomPoint;
bezier.endPosition = randomPoint;
CCBezierBy* bez = [CCBezierBy actionWithDuration:5.0f bezier:bezier];
[sprite runAction:bez];
于 2012-12-20T02:55:19.370 に答える
0
この簡単なレシピはどうでしょうか。一定の速度を確保するために、アクションを置き換える前にfloat vx, vy;
正規化する永続的な速度ベクトルを用意します。ただし、正規化の前に、小さなゼロ中心のランダム値を追加します。たとえば、 と の間にとを追加します。ランダム値の範囲を非常に小さくすると、滑らかで永続的なパスが得られます。範囲を大きくすると、パスの永続性が低下し、昆虫のようにぎくしゃくするようになります。別のオプションは、更新ごとにもう一度サイコロを転がし、非常に低い確率で、正規化の前に非常に大きな変更を加えて、ランダムなインスタンスで昆虫のパスを非常に突然変更させることです。sqrtf((vx * vx) + (vy * vy))
CCMoveTo
-0.3f
0.3f
vx
vy
vx
vy
于 2012-12-19T23:07:19.523 に答える