如何随机移动精灵并保持碰撞工作 - Cocos2d?

时间:2012-08-28 01:34:06

标签: random cocos2d-iphone sprite

我希望有一个随机精灵产生并在屏幕上移动。

我正在使用CGRectIntersectsRect来检测玩家与随机衍生的精灵之间的碰撞。

我已经这样做了,代码工作正常 - 当我有一个设定的间隔。

但是,当我向精灵的生成时间添加随机性时,碰撞不会一直有效。大多数碰撞根本不起作用。

我不确定我做错了什么,并且非常感谢在正确的方向上提供任何帮助。

我认为它与计划间隔以及精灵在屏幕上移动实际需要多长时间有关。

不确定。

另外,如果可以的话,我也想知道在屏幕离开后从场景中删除enemySprite的最佳方式?

这是我的代码:

-(void)targetTimer {
[self schedule: @selector(enemySprite:) interval: 3.0f];
}

-(void)enemySprite:(id)sender {

CGSize winSize = [[CCDirector sharedDirector] winSize];

//SPAWN ENEYMY
enemySprite = [CCSprite spriteWithFile:@"eneymySprite.png"];
enemySprite.position = ccp (winSize.width/16, winSize.height/5);
[self addChild:enemySprite z:300];


CCAction *moveEnemyRight = [CCMoveTo actionWithDuration:3 position:ccp (winSize.width/1, winSize.height/5) ];
[enemySprite moveEnemyRight];

if ( enemySprite.position.y >= winSize.width ) {

    //Best Way to Remove enemySprite from Scene?

}





NSLog(@"Collision");


[self unschedule:@selector(enemySprite:)];
unsigned int t = arc4random()%4 + 1;
[self schedule:@selector(enemySprite:) interval: t];
}

1 个答案:

答案 0 :(得分:1)

你必须让你的敌人阵营,以便能够检查他们是否离开游戏区域(在你的情况下是屏幕)。在你的代码中这部分

if ( enemySprite.position.y >= winSize.width ) {

    //Best Way to Remove enemySprite from Scene?

}

永远不会被召唤。因为您刚刚创建了这个精灵并将enemySprite.position.y >= winSize.width放在游戏区域中,NO总是ccp(winSize.width/16, winSize.height/5)

{{1}}