繁体   English   中英

在iOS 8中使用SpriteKit中的xScale翻转精灵不会翻转SKPhysicsBody

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM