2017-05-26 3 views
0

Ich habe eine sceneKit App für iOS. Ich habe einen SCNPhysicsBody an einen SCNNode angehängt. Ich setze den .physicsBody auf nil, mache einige Änderungen am SCNNode und setze dann den .physicsBody auf einen neuen SCNPhysicsBody oder auf eine Kopie des ursprünglichen SCNPhysicsBody. In beiden Fällen setzt der SCNNode seine Position auf seine Anfangsposition zurück.Wie kann ich den SCNPhysicsBody eines SCNNodes zurücksetzen, ohne die Position des SCNNode zurückzusetzen?

Wie kann ich den .physicsBody zurücksetzen und den SCNNode in der gleichen Position halten, damit er auf seiner Flugbahn weiterläuft?

Antwort

0

Wenn Ihre Physik die Knotenposition beeinflusst, bleibt ihre ursprüngliche Position (die der Knoten position-Eigenschaft zugewiesen wurde) gleich, presentation node Position wurde geändert. Alle Transformationen (Rotation/Skalierung/Translation) funktionieren auf diese Weise.

So kann man etwas so etwas wie dieser Pseudo-Code tun:

// 1. remember position of presentation node 
var position = node.presentation.position; 
// 2. do some changes on node, physics body, whatever 
// 3. restore position (without losing original node position) 
your_node.presentation.position = position 
// ... or apply presentation position to original position 
your_node.position = position 
Verwandte Themen