精灵套件无法创建物理体错误



我的问题是什么:当调用构造函数SKPhysicsBody(纹理:大小:(时,我得到了无法创建物理体错误

我正在所需的init(coderADecoder:NSCoder(构造函数中为我的自定义SKSpriteNode对象创建物理体,这样我就可以在场景编辑器中轻松地设计我的游戏。我需要根据我在场景编辑器中设置的纹理来创建物理体。这是我迄今为止的代码:

import Foundation
import SpriteKit
class Attachable : SKSpriteNode {
init(texture: SKTexture, position: CGPoint, size: CGSize ) {
super.init(texture: texture , color: UIColor.clear, size: size)
self.position = position

}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
DispatchQueue.main.asyncAfter(deadline: .now() + 0.03) {


self.physicsBody = SKPhysicsBody(texture: (self.scene?.view?.texture(from: 
SKSpriteNode(texture: self.texture)))!, size: self.size)

let joint = SKPhysicsJointFixed.joint(withBodyA: self.physicsBody!, bodyB: (. 
self.parent?.physicsBody)!, anchor: self.parent!.position)
self.scene!.physicsWorld.add(joint)
}

}

}

如您所见'纹理:(self.scene?.view?.tructure(来自:SKSpriteNode(纹理:self.texture((!'是我在另一篇带有相同错误的帖子中看到的一个假定的解决方法,但它不起作用,可能是从xcode的最新更新中看到的。反序列化初始值设定项假设我已经在场景编辑器中为Attachable对象选择了一个纹理。我也在做异步的事情,因为关节需要在其中一个实体初始化后创建。我会想出一个更优雅的解决方案,但这超出了这个问题的范围。

编辑:我可以在场景编辑器中设置alpha实体,所以这是一个解决方案,但我更喜欢在类中创建实体。

这个问题似乎一直在重复出现。苹果开发者论坛上也讨论过这个问题。它本应被修复,但似乎又出现了。

最新更新