2012-02-10 86 views
1

我正在制作一个2D精灵,其中我需要精灵的实例在屏幕上随机飞行。他们会随机产生超出iPhone屏幕的边界,然后在屏幕内移动。当他们碰到边缘时,他们会出现在另一边。我只需要知道如何让精灵随机移动。让精灵在屏幕上随机移动

回答

1

此方法添加到您的层类 - 它发生在一个精灵,然后随机地移动它在屏幕上,直到永远。

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

感谢这个,它精美的作品。 – akuritsu 2012-02-11 02:49:32

+0

你知道一种方式,我可以让Sprite以恒定的速度移动,也许可以让它顺利移动。我的意思是让它平稳运行就是让它更频繁地移动到离它更近的地方,而不是指向非常远的地方。我应该只是降低: CGPoint randomPoint = ccp(arc4random()%480,arc4random()%320); – akuritsu 2012-02-11 03:04:35

+0

不,480和320是屏幕的宽度和高度,所以这一行只是在屏幕内产生一个随机位置(根据你原来的问题),如果你想要的不是完全随机的点,你会需要一个不同的方法来做这件事 – 2012-02-11 09:42:38

相关问题