在物理计算scenekit之后得到节点位置

时间:2017-08-29 16:41:17

标签: ios swift3 scenekit

enter image description here

在一个场景套件应用程序上工作,我有两个盒子可以互相射击点。这是计算第一个盒子需要拍摄的位置:

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 个答案:

答案 0 :(得分:4)

只需使用presentation

let realPosition = yourNode.presentation.worldPosition