我有移动的物体,我希望这些物体能够与我的玩家发生碰撞。我有能力通过获取我当时的当前位置/方向来从我身上发射物体,但我不明白如何将一个物体附加到我身上,它会一直跟随我的定位。
最佳答案
在 SceneKit 中,所有可以在场景中占有一席之地的东西都是(附加到)一个节点。这不仅包括可见物体,还包括光源和相机。当您使用 ARSCNView
时,仍然有一个 SceneKit 相机,但 ARKit 控制它的位置/方向。
SceneKit 节点创建一个层次结构:每个节点的位置(和方向等)都是相对于其父节点的。如果父节点在场景中移动,其子节点也会随之移动,以便它们保持相同的父节点相对位置。因此,如果您希望某些内容始终保持相对于相机的相同位置,则应将该内容设为相机节点的子节点。
即使在您不自己创建相机的场景中——例如当 SceneKit 和 ARKit 为您管理相机时——您也可以使用 View 的 pointOfView
获取包含当前相机的节点。属性(property)。 (注意:ARSCNView
是 SCNView
的子类,其大部分有用的 API 由 SCNSceneRenderer
协议(protocol)定义。)
您可能必须等到 session 开始运行才能访问 ARKit 管理的相机节点。
关于swift - 如何使用 ARKit Swift 将对象附加到相机位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531963/