【发布时间】:2015-02-26 10:32:06
【问题描述】:
我很好奇我今天在尝试取消归档并将 SKSpriteNode 从一个 SKScene 复制到另一个时遇到的情况。在下面操场的输出中,您可以看到 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?
【问题讨论】:
-
看起来可能是一个错误。 Have you filed one?你试过单独复制物理体吗?
-
您好,我会尝试进行物理 Body 复制,如果失败也提交错误报告。我还没有报告它,因为我想确保在浪费 Apple 时间之前我没有遗漏一些明显的东西。非常感谢先生。
-
如果我只创建一个 SKPhysicsBody 并尝试复制它(我正在使用游乐场),我会得到一个 SIGABRT,所以这里肯定有什么问题。我将搜索 Apple 网站并提交错误。
-
除了 Rickster 之外没有人评论过我已经按照他的建议做了,并向 Apple #20003803 提交了一个错误
标签: swift sprite-kit copy skspritenode skphysicsbody