0

私のゲームのセットアップは、弓や楕円のように見える曲線に沿っていくつかのスプライトを配置することに依存しています。スプライトをある程度等間隔に配置できるようにしたいと考えています。

誰でもこれを行う方法を共有できますか?

cocos2d 2.1 の使用

4

1 に答える 1

0

これを行うためのより簡単な方法があるかどうかはわかりませんが、その曲線の数式を使用して、任意の曲線に沿ってスプライトを配置できます。

放物線の場合 (利点: 対称であるため、等距離の点を配置​​しやすい) 開始点と終了点を満たす方程式を見つけ、以下の関数を使用して開始点と終了点の間の等距離の x 点の y 値を取得します。

例: y = -x^2 + 20x - 1 (一般式: y = ax^2 + bx + c)

static inline parabolicYValue(float x, float a,float b, float c){
     return (powf(a*x,2) + b*x + c);

}

ベジエ曲線に対して同様の関数を思い付くことができます: (ベジエ 3 次曲線)

static inline CGFloat bezierYValue( float a, float b, float c, float d, float x )
{
    return (powf(1-x,3) * a +
            3*x*(powf(1-x,2))*b +
            3*powf(x,2)*(1-x)*c +
            powf(x,3)*d );
}

ただし、ベジエ曲線上で等間隔のポイントを取得するのは少し面倒です。一方、等距離とは、x 軸に沿った距離のみを意味する場合、これは問題になりません。

于 2014-02-26T06:25:21.580 に答える