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