【问题标题】:get node position after physics calculation scenekit物理计算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 的新位置射击呢?

【问题讨论】:

    标签: ios swift3 scenekit


    【解决方案1】:

    只需使用presentation:

    let realPosition = yourNode.presentation.worldPosition
    

    【讨论】:

    • 谢谢老哥,真的很管用!现在我需要找到一种方法来分析如果击球导致盒子在 y 轴上旋转时改变脉冲角。
    • 谢谢,伙计。这对我帮助很大。
    猜你喜欢
    • 2018-11-01
    • 2015-01-03
    • 2021-08-24
    • 1970-01-01
    • 2017-02-07
    • 2021-05-16
    • 2018-02-28
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多