2014-10-05 75 views
3

我有一個設置,其中有一個空的SKSpriteNode(「玩家」),它有N個SKSpriteNode s作爲子節點(正文部分,比如「臂」)。每個孩子都有這樣創建的SKPhysicsBody在iOS 8的SpriteKit中用xScale翻轉一個精靈並不會翻轉SKPhysicsBody

sprite.physicsBody = SKPhysicsBody(texture: sprite.texture, size: sprite.texture!.size()) 

當我試着使用

self.xScale = -1 

所有的紋理正確翻轉翻轉整個精靈(「播放器),但SKPhysicsBody s爲不受影響。如何正確翻轉整個小精靈以及它們的SKPhysicsBody

+0

很高興我發現這一點,我一直在努力... – SomaMan 2015-11-03 21:20:45

回答

3

從水平翻轉的紋理創建物理體的一種方法是使用圖像編輯軟件(如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) 
} 
+0

似乎還有一個核心圖像過濾器可以翻轉圖像。但這對我的目的已經足夠了,謝謝! – 2014-10-07 11:19:18

+0

謝謝 - 作品一種享受 – SomaMan 2015-11-03 21:21:04

2

縮放是一種視覺屬性,它不影響物理效果。要修改節點的形狀,只能創建並指定一個新的正文沙PE。

+1

謝謝,這就是我的想法。所以我想問題是如何創建一個鏡像的'SKPhysicsBody'。這似乎是用物理機構翻轉精靈的唯一方法。 – 2014-10-05 16:33:40