【问题标题】:Send double tap to SCNView双击发送到 SCNView
【发布时间】:2016-11-15 05:46:58
【问题描述】:

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

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

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

scenekit 中没有类实现 UIControl

所以我不能使用 sendAction

我可以通过 scnView.pointOfView 设置相机位置

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

有没有重置相机的好方法??

【问题讨论】:

    标签: ios swift scenekit


    【解决方案1】:

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

    至于您在设置pointOfView 时出现不想要的动画的问题——您可以使用SCNTransaction 类控制该动画(以及更改对象属性时发生的任何其他隐式动画)。要在没有动画的情况下进行更改,只需执行以下操作(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()
    

    【讨论】:

    • 这就是我的答案!!谢谢,现在相机可以回滚了,allowsCameraControl 也可以工作了。
    【解决方案2】:

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

    【讨论】:

    • 这个点击不能调用scnview.allowsCameraControl里面的双击事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 2016-06-16
    相关资源
    最近更新 更多