Objective c 如何在cocos2d中沿曲线放置精灵

Objective c 如何在cocos2d中沿曲线放置精灵,objective-c,cocos2d-iphone,curve,bezier,cocos2d-iphone-2.x,Objective C,Cocos2d Iphone,Curve,Bezier,Cocos2d Iphone 2.x,我的游戏的设置依赖于沿一条曲线放置几个精灵,该曲线可能看起来像弓、椭圆,或者更复杂一点(假设它是贝塞尔曲线)。我希望能够将我的精灵放置在距离相等的位置 有谁能分享一下如何做到这一点 使用CoCoS2D2.1,我不知道是否有更简单的方法,但我们可以使用该曲线的数学方程沿任何曲线排列精灵 对于抛物线(优点:对称,便于放置等距点) 找出满足起点和终点的方程式,并使用以下函数获得起点和终点之间等距x点的y值 示例:y=-x^2+20x-1(一般方程:y=ax^2+bx+c) 您可以为Bezier曲线提供

我的游戏的设置依赖于沿一条曲线放置几个精灵,该曲线可能看起来像弓、椭圆,或者更复杂一点(假设它是贝塞尔曲线)。我希望能够将我的精灵放置在距离相等的位置

有谁能分享一下如何做到这一点


使用CoCoS2D2.1,我不知道是否有更简单的方法,但我们可以使用该曲线的数学方程沿任何曲线排列精灵

对于抛物线(优点:对称,便于放置等距点) 找出满足起点和终点的方程式,并使用以下函数获得起点和终点之间等距x点的y值

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

您可以为Bezier曲线提供类似的函数: (贝塞尔三次曲线)

然而,在贝塞尔曲线上获得等距点有点麻烦。另一方面,如果你所说的等距是指仅沿x轴的距离,那么这应该不是问题

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

}
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 );
}