我希望有一个随机精灵产生并在屏幕上移动。
我正在使用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];
}
答案 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}}