I am doing one way to solve your problem, maybe this is not the best way, but
//COPY let spriteCopy = spriteNode.copy() as SKSpriteNode let physicsCopy:SKPhysicsBody = spriteNode.physicsBody!; ... //COPY PHYSICS BODY HARD MODE spriteCopy.physicsBody = physicsCopy;
To fix this problem, I created one extension, and @mogelbuster suggested overriding the default copy() , ant, that sounds great.
extension SKSpriteNode { override open func copy() -> Any { let node = super.copy() as! SKSpriteNode; node.physicsBody = super.physicsBody; return node; } }
With this extension you can do this, the copy() method returns Any by default because you need to do it on SKSpriteNode .
// 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

Vituu source share