2014-04-17 4 views
0

xscale을 사용하여 내 SKSpriteNodes 중 하나를 반전하려고 시도하면 충돌 감지가 중지됩니다. 앵커 포인트 이동, 모든 노드 주위의 컨테이너 노드 배치 및 물리 본문 반복과 같은 여러 가지 방법으로이를 해결했습니다. 이 세 번째 옵션은 내가 성공한 유일한 옵션이지만 대부분의 상황에서는 작동하지 않습니다. 모든 삽화를 뒤집고 모든 애니메이션지도의 두 배를 만드는이 짧은 방법을 고칠 수있는 방법이 있습니까?Xscale이 충돌 감지를 방지합니다.

self.player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(30, 60)]; 
    self.player.position= CGPointMake(400, 200); 
    self.player.zPosition = 25; 
    self.player.physicsBody.dynamic = YES; 
    self.player.physicsBody.usesPreciseCollisionDetection = YES; 
    self.player.physicsBody.friction = 0; 
    self.player.name = @"player"; 
    self.player.physicsBody.categoryBitMask = player; 
    self.player.physicsBody.contactTestBitMask = ground; 
    self.player.physicsBody.collisionBitMask = monsterCategory; 
    self.player.physicsBody.allowsRotation = false; 
    [self addChild:self.player]; 

    for (UITouch *touch in touches){ 
    CGPoint touchLocation = [touch locationInNode:self]; 
    if (touchLocation.x>self.player.position.x &&touchLocation.y>=135) { 
     forward2 = YES; 
     multiplierForDirection2 = 1; 
    }else if (touchLocation.x<self.player.position.x && touchLocation.y>=135){ 
     reverse2 = YES; 
     multiplierForDirection2 = -1; 
    } 
    if (mode2 ==1) { 
     [self walkingBear]; 
    }else if (mode2 ==2){ 
     jump2 = true; 
     [self fly]; 
    }else if (mode2 == 3){ 
     [self weapon]; 
    } 
} 
    self.player.xScale = fabs(self.player.xScale)*multiplierForDirection2; 
+0

코드 게시 ... – LearnCocos2D

답변

1

불행히도. xScale = -1 명령을 사용하면 스프라이트의 물리 본문이 손상 될 수 있습니다. 이 문제에 대한 다양한 접근법을 시도했지만 받아 들일 수있는 문제를 해결할 수 없었습니다. 당신이 가지고있는 유일한 해결책은 적어도 지금은 거울 이미지를 만드는 것입니다.

각 이미지를 뒤집기 위해 미리보기 앱을 사용하고 수평 뒤집기 명령에 대한 키보드 단축키를 만들었습니다. 그 덕분에 일이 훨씬 빨라졌습니다.