Ich möchte in der Lage sein, die physicBody Höhe eines Knotens zu ändern, wenn der Benutzer nach unten wischt, aber nicht in der Lage gewesen, herauszufinden, wie dies zu tun, neben dem Zurücksetzen der gesamten Physik.Ändern SpriteNode PhysicsBody Größe zur Laufzeit
Wenn ich ursprünglich die Knoten laden, benutze ich den folgenden Code:
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)
Und wenn ich nach unten wischen, ich möchte in der Lage sein, so etwas zu tun (das funktioniert nicht):
nodeHero.size.height = 28
nodeHero.physicsBody?.size.height = 28
Aber stattdessen muss ich wieder die nodeHero.physicsBody = SKPhysicsBody() verwenden, die alle anderen physicsBody Eigenschaften zurücksetzt, so habe ich dies tun:
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
Wenn Sie eine Skalierungsaktion auf einem Knoten ausführen, scheint sich auch dessen physischer Körper zu ändern: https://stackoverflow.com/questions/24638086/scaling-physics-bodies-in-xcode-spritekit/33572073#33572073 – peacetype