今天我在尝试从一个SKScene
复制和取消归档一个SKSpriteNode
的时候,遇到了一个有趣的情况。从下面游乐场的输出中可以看到,在复制后linearDamping
和angularDamping
都没有被保留(它们似乎回到了默认值)。
// PLAYGROUND_SW1.2 - SKSpriteNode Copy
import UIKit
import SpriteKit
// ORIGINAL
let spriteNode = SKSpriteNode()
spriteNode.name = "HAPPY_NODE"
let size = CGSize(width: 55.0, height: 150.0)
let physics = SKPhysicsBody(rectangleOfSize: size)
physics.linearDamping = 0.123
physics.angularDamping = 0.456
spriteNode.physicsBody = physics
// COPY
let spriteCopy = spriteNode.copy() as! SKSpriteNode
// ORIGINAL
spriteNode.name
spriteNode.physicsBody?.linearDamping
spriteNode.physicsBody?.angularDamping
spriteNode.physicsBody?.area
// COPY
spriteCopy.name
spriteCopy.physicsBody?.linearDamping
spriteCopy.physicsBody?.angularDamping
spriteCopy.physicsBody?.area
游乐场输出
我不确定我是否正确地复制了这个,SKSpriteNode
和SKPhysicsBody
都符合NSCopying
如果您查看上面的输出,则在复制后保留area
属性,据我所知,这是基于创建SKPhysicsBody
时指定的size
。
有人能为此提供一些说明,并为我提供有关如何深度复制SKSpriteNode
的指针吗?