2012-08-28 96 views
1

我想隨機產生一個精靈並在屏幕上移動。如何隨機移動精靈和保持碰撞工作 - Cocos2d?

我使用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

答到第二個問題。 [sprite removeFromParentAndCleanUp:Yes]; – Michael

回答

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) 
+0

感謝您的幫助。 –