2017-08-29 4 views
2

enter image description hereobtenir la position de nœud après calcul de la physique scenekit

travail sur une application scenekit, j'ai 2 boîtes qui peuvent tirer les uns aux autres pour les points. Tel est le calcul de la position où les tirs doivent être faits pour la première boîte:

shot1 = SCNNode() 
shot1.geometry = SCNSphere(radius: 0.5) 
shot1.physicsBody = SCNPhysicsBody.dynamic() 
shot1.position = SCNVector3Make 
(boxNode1.position.x, 
boxNode1.position.y + 1, 
boxNode1.position.z - 1) 
scnScene.rootNode.addChildNode(shot1) 

Et pour la deuxième case:

shot2 = SCNNode() 
shot2.geometry = SCNSphere(radius: 0.5) 
shot2.physicsBody = SCNPhysicsBody.dynamic() 
shot2.position = SCNVector3Make 
(boxNode2.position.x, 
boxNode2.position.y + 1, 
boxNode2.position.z + 1) 
scnScene.rootNode.addChileNode(shot2) 

Chaque coup est faite juste en bonne position et est jeté à l'autre boîte avec l'application de force sur son physicsBody comme impulsion.

Pour la mise en œuvre tactile I utilisé touchesBegan pour rechercher des touches, puis si le contact a le HitResult, je tirer des coups comme je l'ai décrit ci-dessus. Le problème se produit où: Si le tir par exemple shot1 a frappé boxNode2, le boxNode2 est déplacé vers l'arrière comme je l'attends et cette fois si je tire un coup avec boxNode2, la position de départ de shot2 N'EST PAS à NEW boxNode2 comme je l'attends, et commence à tirer là où il était au début!

Alors, comment puis-je tirer des coups de nouvelle position des boxNodes?

Répondre

1

Il suffit d'utiliser presentation:

let realPosition = yourNode.presentation.worldPosition 
+0

homme Merci, ça marche vraiment! Maintenant, j'ai besoin de trouver un moyen d'analyser la modification de l'angle d'impulsion si le tir a provoqué la rotation de la boîte sur l'axe y. – FarhaD