物理计算scenekit后获取节点位置
Posted
技术标签:
【中文标题】物理计算scenekit后获取节点位置【英文标题】:get node position after physics calculation scenekit 【发布时间】:2018-02-07 05:12:28 【问题描述】:在一个场景包应用程序上工作,我有 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
【讨论】:
谢谢老哥,真的很管用!现在我需要找到一种方法来分析如果击球导致盒子在 y 轴上旋转时改变脉冲角。 谢谢,伙计。这对我帮助很大。以上是关于物理计算scenekit后获取节点位置的主要内容,如果未能解决你的问题,请参考以下文章