【发布时间】:2021-12-08 02:17:27
【问题描述】:
在一个项目中,我已将SCNPlane 附加到默认摄像头,因为allowsCameraControl 设置为true,如下所示:
scnView.pointOfView?.addChildNode(plane)
然后将平面放置在默认相机的正前方:
plane.position = SCNVector3(x: 0, y: 0, z: -5)
不过,当我调试场景时,它最初会在正确的位置显示飞机。但是,当通过用户触摸输入更改默认相机位置时,平面不会停留在相机前方,而是停留在初始位置。
有谁知道是什么导致了这里的误解?
【问题讨论】:
-
如果我没记错的话,只要通过手势移动相机,就会创建一个内部相机对象并用于执行移动,因此您的对象不会被移动,因为它会保持原始状态相机。这是由于这个特殊的 allowCameraControl 属性。尝试禁用此属性(设置为 false)并交替移动相机。 (在 github 上,您可以找到有关使用手势移动/旋转对象的示例,这些示例不会在 allowCameraControl 上中继 - i.Ex:github.com/gadsden/SceneKit-Quaternion-Rotations)
-
感谢您的回答。我知道这一点,并明确希望使用通过allowCameraControl创建的默认相机,因为它非常好。我认为将一个物体附加到该相机上会以相同的方式工作,但显然它没有。