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;
}];
}
}
동적이어야합니다. – Roecrew
YES로 변경해도 여전히 작동하지 않습니다. 또한 스프라이트는 동적 일 때 화면에서 춤을 춘다. – user1681673
이상한 일은 첫 번째 스프라이트와의 접촉이 잘 작동한다는 것입니다. 스프라이트가 서로 처음 만나는 첫 접촉 이후입니다. – user1681673