2014-05-13 7 views
0

두 스프라이트 간의 충돌을 감지하고 충돌시 장면에 스프라이트를 추가하려고합니다. 다음 메소드는 충돌이 감지 될 때 호출됩니다.SpriteKit 충돌 감지에 스프라이트 추가하기

-(void) contactBetweenGreenBallAndRedBall:(SKPhysicsContact *) contact 
{ 
    if([self isLevelCompleted]) 
    { 
     [self addRedBallsToScene:10]; 
    } 

} 

// add red balls to the scene 
-(void) addRedBallsToScene:(int) numberOfRedBalls 
{ 
    for(int i = 1; i <= numberOfRedBalls; i++) 
    { 
     int x = arc4random() % (int) self.size.width; 
     int y = arc4random() % (int) self.size.height; 

     RedBall *redBall = [[RedBall alloc] init]; 
     redBall.name = @"redball"; 
     redBall.position = CGPointMake(x, y); 

     [self addChild:redBall]; 

     [_redBalls addObject:redBall]; 

     [redBall.physicsBody applyImpulse:CGVectorMake(5.0, -10.0f)]; 
    } 
} 

장면에 redBall을 추가하더라도 결코 보지 못합니다. 이 장면은 새롭게 추가 된 빨간 공을 절대 보여주지 않습니다.

업데이트 : 스프라이트가 추가되고있는 것을 보았습니다. 그러나 어떤 이유인지 그들은 0,0에 추가되었습니다. 이유가 무엇입니까?

+0

이 코드 조각에서는 self.size가 0,0이면 0,0 일 수 있습니다. 중단 점을 설정하고 확인하십시오. – LearnCocos2D

답변

0

귀하의 코드

int x = arc4random() % (int) self.size.width; 
int y = arc4random() % (int) self.size.height; 

는 유효하고 작품이다. 귀하의 문제는 실제 코드가 아니라 반환 값이 화면 크기를 반영하지 않는 곳에서 호출되는 self.size ...의 위치입니다. 다른 위치에서 코드를 호출 해보십시오. 테스트하려면 임의 값 대신 수동 값을 사용하십시오.

관련 문제