2012-12-19 66 views
0

我将如何去创建一个随机路径,并有一个精灵跟着它?
只要它到达路径的末端,暂停并开始一条新路径,并且如果我需要,还有多个路径?
我想在屏幕上生成随机坐标,并使用CCMoveTo,但这会使一条直线,并会很无聊。我想复制周围飞行的昆虫的行为。任何人都可以将我指向正确的方向吗?CCSprite遵循随机路径

回答

0

这个简单的食谱怎么样:有一个永久性的速度矢量float vx, vy;,你sqrtf((vx * vx) + (vy * vy))正常化之前更换您的CCMoveTo行动,以确保恒定的速度。然而,在归一化之前,添加小的以零为中心的随机值,例如,在-0.3f0.3fvxvy之间。随机值的非常小的范围会给你平稳的持续路径,更大的范围会使路径不那么持久,像一只昆虫一样紧张。另一种选择是在每次更新时再次掷骰子,并且以极低的概率在归一化之前对vxvy进行非常大的更改,使得昆虫在随机情况下突然改变其路径。

+0

你能提供一个例子吗?我的小精灵很紧张,但一般都遵循同样的道路。 – iamruskie

0

您可以使用CCBeizierToCCBezierBy 例如:

#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]; 
+0

精灵关闭屏幕:/ – iamruskie