发送双击到 SCNView

Send double tap to SCNView

SCNView 构建相机控件有一个功能,双击场景视图并在启用 allowsCameraControl 时将相机回滚到起始位置。

我去添加一个按钮做同样的事情

当用户点击按钮时,我会将相机回滚到开始位置

scenekit中没有class实现UIControl

所以我不能使用 sendAction

我可以通过scnView.pointOfView

设置相机位置

但是当用户滚动相机时有一个动画,当动画为运行时设置相机位置将失败。

有什么重置相机的好方法吗??

只需将 TapGestureRecognizer 添加到您的情节提要中,添加到具有 SCNView 的视图中。将手势识别器操作连接到您的 class,以便您拥有 IBAction。在 Storyboard Attributes Inspector 中将点击次数设置为两次点击。现在您可以添加代码来重置相机。

NicoS 的回答有效地处理了您关于让用户操作更改相机 POV 的问题部分。

至于您在设置 pointOfView 时遇到的不想要的动画问题 — 您可以使用 SCNTransaction [=18= 控制该动画(以及更改对象属性时发生的任何其他隐式动画) ].要在没有动画的情况下进行更改,只需执行以下操作 (Swift 3):

SCNTransaction.begin()
SCNTransaction.animationDuration = 0
// perform your changes...
view.pointOfView = newCameraNode
// ...and anything else you want to happen in the same non-animated update, then...
SCNTransaction.commit()