簡體   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