我遇到的问题和你的完全一样。我花了大约2个小时才弄清楚。
只需在 scaleX 后初始化你的物理体,我不知道为什么,但我通过这种方式纠正了这个问题。
walkRight = [SKAction sequence:@[resetDirection,[SKAction runBlock:^{
[self changePhysicsDirectionRight];
}],[SKAction repeatActionForever: walk]]];
walkLeft = [SKAction sequence:@[mirrorDirection,[SKAction runBlock:^{
[self changePhysicsDirectionLeft];
}],[SKAction repeatActionForever: walk]]];
walkRight 和 walkLeft 是我改变方向时的动作,而 resetDirection 和 mirrorDirection 正是我用来 scaleXTo:1 和 scaleXTo:1 的动作
所以在我 scaleXTo 之后,我使用一个方法调用 changePhysicsDirectionRight 来重新初始化我的 physicBody
- (void)changePhysicsDirectionRight{
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.size.width,self.size.height)];
self.physicsBody.categoryBitMask = guyCategory;
self.physicsBody.contactTestBitMask = 0;
self.physicsBody.collisionBitMask = 0;
}
请记住重新分配您的所有类别以及之前初始化的所有内容。
我希望 spritekit 的专业人士可以告诉我原因....