当我尝试使用xscale来翻转我的任何SKSpriteNodes时,它们会停止检测碰撞。我已经尝试了许多不同的方法来解决这个问题,包括移动锚点,将容器节点包裹在我的所有节点周围,并重复物理体。第三种选择是我唯一获得成功的选择,但它在大多数情况下都不会起作用。有没有什么方法可以解决这个问题,无法翻转所有的艺术作品,并创造出每个动画地图集的两倍?
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 :(得分:1)
不幸的是没有。使用命令xScale = -1
会对精灵的物理主体造成严重破坏。我尝试了各种方法解决这个问题,但无法提出可接受的修复方法。至少现在,您拥有的唯一解决方案是创建镜像。
要翻转每个图像,我使用了预览应用程序,并为“水平翻转”命令创建了一个键盘快捷键。这使得工作更快。