[英]Flipping a sprite with xScale in SpriteKit in iOS 8 doesn't flip the SKPhysicsBody
我有一个设置,其中有一个空的SKSpriteNode
(“播放器”),其中有N个SKSpriteNode
作为子项(正文部分,如“Arm”)。 每个孩子都有一个像这样创建的SKPhysicsBody
:
sprite.physicsBody = SKPhysicsBody(texture: sprite.texture, size: sprite.texture!.size())
当我尝试翻转整个精灵(“播放器”)时
self.xScale = -1
所有纹理都正确翻转,但SKPhysicsBody
不受影响。 如何正确地将所有孩子和他们的SKPhysicsBody
翻转整个精灵?
从水平翻转的纹理创建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)
}
比例是一种视觉属性,它不会影响物理。 要修改节点的形状,您只能创建并指定具有新形状的新主体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.