2012-08-28 2 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 : 예]; – 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

도움 주셔서 감사합니다. –

관련 문제