2012-08-30 2 views
0

저는 COSOS2d를 사용하여 iOS에서 게임을 만들고 있습니다. CCTouch 경계 상자가 생성되지 않음

- (void)selectSpriteForTouch:(CGPoint)touchLocation { 
    CubeSprite * newSprite = nil; 
    for (CubeSprite *sprite in movableSprites) { 
     NSLog(@"tested against sprite %i", sprite.boundingBox.origin.x); 
     if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {  
      singleCube = true; 
      newSprite = sprite; 
      activeTag = sprite.tag; 
      break; 
     } 
    }  
    if (newSprite != selSprite) { 

     selSprite = newSprite; 
    } 
} 

그러나 어떤 이유로

가의 sprite.boundingBox가 올바르게 설정되지 않는, 큐브가 접촉되어 있는지 확인하기 위해 사용하는 방법 임이다.

"테스트 된 스프라이트"로그는 "스프라이트 0에 대한 테스트"를 인쇄합니다. 이는 화면에 스프라이트를 볼 수있는 것처럼 보이지 않습니다.

여기 내 현장에 큐브를 추가하는 데 사용하는 방법,

-(void)addCube:(CubeSprite *)cube { 
    int totalCubes = [cubes count]; 
    [cube setPosition:ccp(700 - (totalCubes * 50), 120)]; 
    [cubes addObject:cube]; 
    [movableSprites addObject:cube]; 
    [self addChild:cube]; 
} 

것은 무엇 가능성이 잘못 될 수있어?

미리 감사드립니다.

편집, 여기 내 큐브 초기화 방법이

for (CubeSprite *sprite in movableSprites) { 
CGRect projectileRect = [sprite boundingBox]; 

if (CGRectContainsPoint(projectileRect, touchLocation)) {  
      singleCube = true; 
      newSprite = sprite; 
      activeTag = sprite.tag; 
      break; 
     } 
    }  

답변

0

시도이다. "휴식; 모든 큐브를 반복해야합니다.

잘못 될 수있는 몇 가지 : - 큐브의 BoundingBox의 너무 큰 당신이 생각하는 곳의 위치가 아닌 - touchLocation (0,0)

0

어쩌면 CGRectContainsPoint이 possitive false를 돌려 사용하는

-(id)initWithNumber:(int)number { 
    if((self=[super init])) { 
     [self setTag:number]; 
     CCSprite* sprite = [CCSprite spriteWithFile:string]; 
     [self addChild:sprite]; 
     NSLog(@"Cube created with value of %i and with file %@", number, string); 
    } 
    return self; 
} 
0

셨습니까 엑스 코드입니다 - 모든 큐브가 같은 위치 가지고 잘못된 형식 문자열에 대한 경고를 제공 하시겠습니까?

NSLog(@"tested against sprite %i", sprite.boundingBox.origin.x); 

%i은 정수 값을 의미합니다. CGPoint의 좌표는 부동 소수점 값입니다. 대신 %f을 사용하십시오.

관련 문제