CCSprite遵循随机路径

时间:2012-12-19 22:41:03

标签: objective-c cocos2d-iphone ccsprite

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

2 个答案:

答案 0 :(得分:0)

这个简单的配方如何:在替换float vx, vy;动作之前,使用sqrtf((vx * vx) + (vy * vy))标准化的持续速度矢量CCMoveTo以确保恒定速度。然而,在归一化之前,添加小的零中心随机值,例如,在-0.3f0.3fvxvy之间。随机值的非常小的范围将为您提供平滑的持久路径,较大的范围将使路径不那么持久并且像昆虫的那样紧张。另一种选择是在每次更新时再次掷骰子,并且在概率化之前对vxvy做出非常大的改变,使你的昆虫突然随机改变它的路径实例

答案 1 :(得分: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];