获得SCNPhysicsVehicle的位置

Pam*_*oes 11 scenekit

我正在使用Apple的SceneKit进行基本的赛车游戏,并且遇到了模拟汽车的问题.使用SCNPhysicsVehicle行为,我能够正确设置汽车并使用记录的方法驱动它.

但是,我无法获得该车的位置.似乎合乎逻辑的是,SCNPhysicsVehicle会在汽车移动时移动包含底盘和车轮的SCNNode,但SCNNodes仍保持其原始位置和方向.奇怪的是,底盘的SCNPhysicsBody的速度在整个模拟过程中保持准确,所以我可以假设汽车的位置是基于SCNPhysicsBody而不是SCNNode.不幸的是,我没有找到记录方法来获得SCNPhysicsBody的位置.

获得一个汽车的位置应该是微不足道的,并且对于创建一个赛车游戏是必不可少的,但我似乎找不到任何获得它的方法.任何想法或建议将不胜感激.

ric*_*ter 24

Scene Kit会SCNPhysicsBody根据物理模拟自动更新拥有的节点的位置,因此SCNNode.position是要查找的正确属性.

问题在于该节点实际上有两个版本.您通常访问的那个称为"模型"节点.它反映了您设置的属性的目标值,即使您通过动画设置这些属性也是如此.在presentationNode反映当前渲染节点的状态-如果动画过程中,节点的属性有中间值,而不是动画的目标值.

您在更新/渲染循环方法中所做的操作,物理,约束和任何场景图更改都直接定位到场景图的"演示"版本.因此,要读取由物理模拟设置的节点属性,请获取您感兴趣的节点(拥有车辆物理主体的节点),然后读取演示节点(或其他属性).presentationNodechassisBodyposition

  • 并获取presentationNode:node.presentationNode (2认同)