Sono curioso di una situazione in cui mi sono imbattuto oggi cercando di annullare l'archiviazione e copiare uno SKSpriteNode
da un SKScene
a un altro. In uscita dal parco giochi di seguito si può vedere che sia linearDamping
e angularDamping
o non essere mantenuta dopo la copia (che sembrano essere cadere di nuovo a valori di default)Come copiare SKSpriteNode con SKPhysicsBody?
// 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
GIOCO DI USCITA
Sono non sono sicuro che sto copiando questo correttamente, sia SKSpriteNode
sia SKPhysicsBody
conformi a NSCopying
Se si guarda l'output sopra la proprietà area
viene mantenuta dopo la copia e, a quanto mi risulta, si basa sul size
specificato quando SKPhysicsBody
è stata creata.
Qualcuno può fare un po 'di luce su questo e forse fornirmi un puntatore su come dovrei fare una copia profonda di SKSpriteNode
?
Sembra un possibile bug. [Ne hai registrato uno] (http://bugreport.apple.com)? Hai provato a copiare separatamente il corpo fisico? – rickster
Salve, proverò a fare la fisica Body copy e quindi invierò un bug report se fallisce anche tu. Non l'avevo ancora segnalato perché volevo essere sicuro che non mi mancasse qualcosa di ovvio prima di sprecare tempo a Mele. Molto apprezzato, signore. – fuzzygoat
Se creo solo un singolo SKPhysicsBody e provo a copiarlo (sto usando un parco giochi) ottengo un SIGABRT, quindi qualcosa non è assolutamente adatto. Cercherò il sito Apple e invierò un bug. – fuzzygoat