1
我正在制作一个2D精灵,其中我需要精灵的实例在屏幕上随机飞行。他们会随机产生超出iPhone屏幕的边界,然后在屏幕内移动。当他们碰到边缘时,他们会出现在另一边。我只需要知道如何让精灵随机移动。让精灵在屏幕上随机移动
我正在制作一个2D精灵,其中我需要精灵的实例在屏幕上随机飞行。他们会随机产生超出iPhone屏幕的边界,然后在屏幕内移动。当他们碰到边缘时,他们会出现在另一边。我只需要知道如何让精灵随机移动。让精灵在屏幕上随机移动
此方法添加到您的层类 - 它发生在一个精灵,然后随机地移动它在屏幕上,直到永远。
-(void)moveRandom:(CCSprite*)s
{
CGPoint randomPoint = ccp(arc4random()%480, arc4random()%320);
NSLog(@"%@", NSStringFromCGPoint(randomPoint));
[s runAction:
[CCSequence actions:
[CCMoveTo actionWithDuration:arc4random()%5+1 position: randomPoint],
[CCCallBlock actionWithBlock:^{
[self performSelector:@selector(moveRandom:) withObject:s afterDelay:0.5];
}],
nil]
];
}
正如你可以看到它是很容易 - 在屏幕上生成一个随机点然后在精灵上对这一点运行移动操作。完成后 - 重复。
要在屏幕上添加一个精灵和启动过程中,场景中的init()方法把这个(可能),或者无论你做现场初始化:
CCSprite* s = [CCSprite spriteWithFile:@"yourImage.png"];
[self addChild: s];
[self moveRandom:s];
感谢这个,它精美的作品。 – akuritsu 2012-02-11 02:49:32
你知道一种方式,我可以让Sprite以恒定的速度移动,也许可以让它顺利移动。我的意思是让它平稳运行就是让它更频繁地移动到离它更近的地方,而不是指向非常远的地方。我应该只是降低: CGPoint randomPoint = ccp(arc4random()%480,arc4random()%320); – akuritsu 2012-02-11 03:04:35
不,480和320是屏幕的宽度和高度,所以这一行只是在屏幕内产生一个随机位置(根据你原来的问题),如果你想要的不是完全随机的点,你会需要一个不同的方法来做这件事 – 2012-02-11 09:42:38