У меня есть спрайт в моем редакторе сцен, который называется «redsprite» с некоторыми физическими свойствами. Я действительно хочу использовать этот спрайт для следующего.Как дублировать спрайт с физическими свойствами, а затем добавить его в сцену?
Я хотел бы «дублировать» этот спрайт, сохраняя его физические свойства, но с новым положением.
let sprite:SKSpriteNode = (self.childNode(withName: "redsprite") as! SKSpriteNode).copyWithPhysicsBody()
sprite.position = CGPoint(x:100,y:100)
self.addChild(sprite)
Я использую расширение SKSpriteNode для копирования спрайта.
extension SKSpriteNode {
func copyWithPhysicsBody()->SKSpriteNode {
let node = self.copy() as! SKSpriteNode
node.physicsBody = self.physicsBody
return node
}
}
У меня есть эта классическая ошибка:
Terminating app due to uncaught exception 'Cant add body, already exists in a world', reason: 'Cant add body <SKPhysicsBody> type:<Rectangle> representedObject:[<SKSpriteNode> name:'redsprite' texture:['nil'] position:{100, 100} scale:{1.49, 1.40} size:{149.15391540527344, 140.06228637695312} anchor:{0.5, 0.5} rotation:0.00], already exists in a world'
я понял ошибку, это очень ясно, но я не найти способ, чтобы избежать этого.
невероятно, он не копирует настройки physicsBody, когда вы делаете глубокий копия, это кажется. (конец 2017 года). Как смешно. – Fattie