1

我想要一个随机的精灵生成并在屏幕上移动。

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];
}
4

1 回答 1

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)
于 2012-08-28T11:28:22.717 回答