2014-02-25 40 views
0

我的遊戲的設置依賴於將幾個精靈沿着可能看起來像是弓形,橢圓形或者更復雜一些的曲線放置(假設它會變成貝塞爾曲線) 。我希望能夠將我的精靈放在相等的距離上。如何在cocos2d中沿着曲線放置精靈

任何人都可以分享如何做到這一點?

使用cocos2d的2.1

回答

0

我不知道是否有這樣做的更簡單的方法,但我們可以用數學方程式爲曲線沿安排任何曲線精靈。

對於拋物線曲線(優勢:對稱,便於放置等距點) 找到滿足您的起點和終點的方程,並使用下面的函數獲取起點和終點之間等距x點的y值。

例如:Y = -x^2 + 20× - 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); 

} 

你可以想出用於Bezier曲線類似的功能: (貝塞爾三次曲線)

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

但是,在bezier曲線上獲得等距點是一件繁雜的工作。另一方面,如果你是等距的,你的意思是,只有沿x軸的距離,那麼這應該不成問題。