3

距離 (弧の距離) が均一になるように、複数のスプライト (画像) を楕円パスで移動しようとしています。

私が試してみました

  • 各スプライトの角度を角度ごとに移動しますが、これに伴う問題は、長軸を中心に単位角度を移動するときの移動距離が、短軸を中心に単位角度を移動するときの移動距離とは異なることです。したがって、移動距離が異なります。

  • x 軸を一様に変更してスプライトを移動しますが、再び長軸を中心に移動します。

では、スプライトが互いに追いついたり重なったりすることなく、スプライトを均一に移動する方法はありますか?

他の情報:

  • onMouseMove/onTouchMoved で呼び出されるので、CPU を集中的に使用するべきではないと思います。
  • 一般的なアルゴリズムの質問ですが、それが役立つ場合は cocos2d-x を使用しています
4

1 に答える 1

1

だから、これは私がやったことです(それは私のためにそれを解決しました):

円の方程式で動かし、角度を1度増やしました。sin/cos(角度) * 半径を使用して計算された x と y。そして、それを楕円にするために、係数を掛けました。

因子は yIntercept/xIntercept でした。

だから結局こんな感じだった

FACTOR = Y_INTERCEPT / X_INTERCEPT;

//calculate previous angle
angle = atan((prev_y/FACTOR)/prev_x);

//increase angle by 1 degree (make sure its not radians in your case)
angle++;

//new x and y
x =  cos(newangle) * X_INTERCEPT;
y =  sin(newangle) * X_INTERCEPT * FACTOR;
于 2012-12-02T13:28:26.783 に答える