小编Far*_*haD的帖子

在物理计算场景包后获取节点位置

在此处输入图片说明

在处理场景套件应用程序时,我有 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)
Run Code Online (Sandbox Code Playgroud)

对于第二个框:

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)
Run Code Online (Sandbox Code Playgroud)

每一次射击都在正确的位置进行,然后被扔到另一个盒子上,并在其物理体上施加力作为脉冲。

对于触摸实现,我使用 touchesBegan 来搜索触摸,然后如果触摸具有 hitResult,我将按上述方式开火。

问题发生在:如果例如 shot1 击中 boxNode2,boxNode2 会按我的预期向后移动,这次如果我用 boxNode2 射击,shot2 的起始位置不在我预期的 boxNode2 的新位置,并且开始在开始的地方开火!

那么我怎样才能从 boxNodes 的新位置开火呢?

ios scenekit swift3

6
推荐指数
1
解决办法
726
查看次数

标签 统计

ios ×1

scenekit ×1

swift3 ×1