Desidero essere in grado di modificare la fisica di un nodoAltezza del corpo quando l'utente scorre verso il basso, ma non è stato in grado di scoprire come farlo, oltre a resettare l'intero corpo fisico.Modifica SpriteNode PhysicsBody Size in fase di esecuzione
Quando ho inizialmente carico del nodo, io uso il codice qui sotto:
nodeHero.color = UIColor .grayColor()
nodeHero.size.width = 20
nodeHero.size.height = 45
nodeHero.position.x = -frame.size.width/2 + 45
nodeHero.position.y = pointMainY + 30 + nodeHero.size.height/2
nodeHero.zPosition = 110
nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
nodeHero.physicsBody?.mass = 1
nodeHero.physicsBody?.angularVelocity = 0
nodeHero.physicsBody?.allowsRotation = false
nodeHero.physicsBody?.restitution = 0
nodeHero.physicsBody?.categoryBitMask = bitHero
addChild(nodeHero)
E quando ho scorrere verso il basso, voglio essere in grado di fare qualcosa di simile (questo non funziona):
nodeHero.size.height = 28
nodeHero.physicsBody?.size.height = 28
invece devo usare il nodeHero.physicsBody = SKPhysicsBody nuovamente(), che resetta tutte le altre proprietà physicsBody, quindi devo fare questo:
nodeHero.size.height = 28
nodeHero.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(nodeHero.size.width, nodeHero.size.height))
nodeHero.physicsBody?.mass = 1
nodeHero.physicsBody?.angularVelocity = 0
nodeHero.physicsBody?.allowsRotation = false
nodeHero.physicsBody?.restitution = 0
nodeHero.physicsBody?.categoryBitMask = bitHero
Se si esegue un'azione di scala su un nodo, sembra che anche il suo corpo fisico cambierà: https://stackoverflow.com/questions/24638086/scaling-physics-bodies-in-xcode-spritekit/33572073#33572073 – peacetype