2017-08-29 55 views
2

enter image description here獲得物理計算scenekit

在scenekit應用程序的工作後節點位置,我有2盒,可以鳴槍,以相互點。這是位置的計算,其中的鏡頭需要在第一套管中:

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) 

而對於第二個框:

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) 

每一個鏡頭是剛剛好的位置製成,並拋向另一個盒子將其物理學的身體施加力量作爲衝動。

對於觸摸實現,我使用touchesBegan來搜索觸摸,然後如果觸摸具有hitResult,則按照上面所述觸發拍攝。

問題發生在: 如果鏡頭例如shot1擊中了boxNode2,boxNode2會像我預期的那樣向後移動,這一次如果我用boxNode2射擊一個鏡頭,shot2的起始位置不在新位置boxNode2,正如我所期望的那樣,並開始向右開始!

那麼我該如何從boxNodes的新位置開槍呢?

回答

1

只需使用presentation

let realPosition = yourNode.presentation.worldPosition 
+0

感謝的人,它真的有效!現在我需要找到一種方法來分析改變脈衝角度,如果鏡頭引起了Y軸上的盒子旋轉。 – FarhaD