在一个场景套件应用程序上工作,我有两个盒子可以互相射击点。这是计算第一个盒子需要拍摄的位置:
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的新位置开始拍摄?
答案 0 :(得分:4)
只需使用presentation
:
let realPosition = yourNode.presentation.worldPosition