2016-11-23 3 views
1

Gibt es eine Möglichkeit, einen Physikkörper in swift 3 zu entfernen?Physikkörper entfernen

Alle ich fand, war myNode.phyisicsBody = nil aber es funktioniert nicht in schnellen 3

„Nil kann nicht zugeordnet werden SKPhysicsBode eingeben“

In der Tat, die standardmäßig meine scene.sks Kind Szene hat wer hat ein physicsBody, einen kleinen Punkt in der Mitte, und es ist diese, die ich

<code>The code to get the physicsBody</code> <code>scene.sks with "Scene" child</code>entfernen würdeSmall dot that I don't want

+0

Haben Sie versucht, die 'removeFromParent' Funktion? – Henningsson

+0

Habe dieses nicht. Nur "remove", das ich habe, ist 'removeObserver' – Marsgames

+1

Gerade versuchte diese Linie' myNode.physicsBody = nil 'im Spielplatz, es funktioniert gut. Vielleicht könnten Sie uns etwas mehr Code zeigen. Wie hast du den Knoten und 'physicsBody' erstellt? Beachten Sie auch den Tippfehler ** Physik ** – Idan

Antwort

1

versucht einfach den folgenden Code auf dem Spielplatz, können Sie myNode.physicsBody = nil

import UIKit 
import SpriteKit 

let spriteNode = SKSpriteNode(imageNamed: "elephant") 

spriteNode.physicsBody = SKPhysicsBody(texture: spriteNode.texture!, 
             size: spriteNode.texture!.size()) 
spriteNode.physicsBody = nil // No Error 

Von Apple API about physicsBody:

Der Standardwert gleich Null ist, was anzeigt, dass der Knoten nicht in der Physik beteiligt sich Simulation überhaupt. Wenn ein Physikkörper bereitgestellt wird, wenn die Physik der Szene simuliert wird, aktualisiert der Physikkörper die Position des Knotens und dreht den Knoten.

Ich würde sagen, überprüfen Sie, wo Sie ursprünglich erstellt physicsBody, und stellen Sie sicher, es ist optional.

bearbeiten

SceneObject!.physicsBody! = nil 

Dies kann nicht funktionieren! durch die ! mit erzählst du den Compiler, dass es nicht nil

ändert es zu

SceneObject!.physicsBody = nil