我有一个设置,其中有一个空SKSpriteNode
("播放器"),其中有N个SKSpriteNode
s作为孩子(身体部位,例如"臂&#34)。每个孩子都有SKPhysicsBody
这样创建:
sprite.physicsBody = SKPhysicsBody(texture: sprite.texture, size: sprite.texture!.size())
当我尝试用
翻转整个精灵("播放器)时self.xScale = -1
所有纹理都正确翻转,但SKPhysicsBody
不受影响。如何将所有孩子及其SKPhysicsBody
正确翻转整个精灵?
答案 0 :(得分:3)
从水平翻转的纹理创建physicsBody的一种方法是使用图像编辑软件(如Photoshop)创建输入图像的翻转版本。另一种方法是使用核心图形翻转原始图像。以下是如何执行此操作的示例:
func flippedTextureWithImageNamed(name:NSString) -> SKTexture
{
let image = UIImage(named:name)
UIGraphicsBeginImageContext(image.size);
let context = UIGraphicsGetCurrentContext()
CGContextTranslateCTM(context, image.size.width, image.size.height)
CGContextScaleCTM(context, -1.0, -1.0)
CGContextDrawImage(context, CGRectMake(0.0, 0.0, image.size.width, image.size.height), image.CGImage)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext();
return SKTexture(image: newImage)
}
答案 1 :(得分:2)
缩放是一种视觉属性,它不会影响物理。要修改节点的形状,您只能创建并指定一个具有新形状的新主体。