2014-04-06 4 views
1

iOS 7.1 업데이트 후에 SpriteKit 게임의 개체가 충돌을 멈 춥니 다. 이것은 화면의 경계를 포함하므로 문자가 화면에서 그냥 사라집니다. 충돌을 감지하고 didBeginContact 대리자 메서드에서 충돌을 처리하기 위해 비트 마스크를 사용하고 있습니다. SKNode를 추가하는 방법에 대한 코드를 추가하겠습니다. 미리 감사드립니다.SpriteKit의 개체가 iOS 7.1 업데이트 후 충돌을 멈 춥니 다.

//main character 
self.girl = [SKSpriteNode spriteNodeWithImageNamed:@"pixelgirl"]; 
self.girl.position = CGPointMake(self.size.width/2, self.size.height * 0.2); 
[self addChild:self.girl];   
self.girl.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.girl.size.height/4]; 
self.girl.physicsBody.dynamic = YES; 
self.girl.physicsBody.affectedByGravity = NO; 
self.girl.physicsBody.mass = 0.02; 
self.girl.physicsBody.allowsRotation = NO; 
self.girl.physicsBody.categoryBitMask = girlCategory; 
self.girl.physicsBody.contactTestBitMask = tallTreeCategory | uglyTreeCategory | shortTreeCategory; 

//contact object 
SKSpriteNode *pixelShort = [SKSpriteNode spriteNodeWithImageNamed:@"pixelshort"]; 
pixelShort.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:pixelShort.size.width/2]; //2 
pixelShort.physicsBody.dynamic = NO; 
pixelShort.physicsBody.categoryBitMask = uglyTreeCategory; 

- (void)didBeginContact:(SKPhysicsContact *)contact 
{ 

__block BOOL isRotating; 

[self performSelector:@selector(moveDog) withObject:Nil afterDelay:.3]; 

isRotating = NO; 

if (!isRotating) { 
    SKAction* action0 = [SKAction scaleXTo:1.0 duration:0.05]; 
    SKAction* action1 = [SKAction scaleXTo:0.1 duration:0.05]; 
    SKAction* action2 = [SKAction scaleXTo:-0.1 duration:0.05]; 
    SKAction* action3 = [SKAction scaleXTo:-1.0 duration:0.05]; 

    SKAction* action = [SKAction sequence:@[action0,action1,action2, action3]]; 

    [self.girl runAction:action completion:^{ 
     isRotating = YES; 
    }]; 

    } 

} 
+0

동적이어야합니다. – Roecrew

+0

YES로 변경해도 여전히 작동하지 않습니다. 또한 스프라이트는 동적 일 때 화면에서 춤을 춘다. – user1681673

+0

이상한 일은 첫 번째 스프라이트와의 접촉이 잘 작동한다는 것입니다. 스프라이트가 서로 처음 만나는 첫 접촉 이후입니다. – user1681673

답변

1

문제는 scaleXTo:-1.0입니다. 나는 똑같은 명령을 사용하여 내 스프라이트 중 하나를 비추었고 내가 한 것처럼 작은 사람은 모든 접촉에 응답하지 않았습니다. 그것을 제거하고 모두 잘 다시해야합니다.

+0

다른 질문/답변이 있습니다. 또한,'SKView'의'showsPhysics' 속성을'YES'로 설정하십시오. 부정적인 스케일 버그로 인해 문제의 원인을 시각적으로 보는데 도움이 될 것입니다. – prototypical

+0

@protypypical - 물론입니다. 이 xTo-1 문제를 해결하지 않아서 내 스프라이트에 대한 대칭 이미지를 만드는 결과를 가져 왔습니다. 나는 그날 키보드 단축키를 만든 천재를 칭찬했다! – sangony

+0

YEESSS. 정말 고맙습니다. 그거였다. 그게 문제가 될 줄은 몰랐어. 노드의 일부 속성이라고 생각했습니다. TY. 스프라이트를 만들기위한 대안이 있습니까? – user1681673