【问题标题】:Scenekit gesture recognizer and overlaySKScene touchesScenekit 手势识别器和覆盖SKScene 触摸
【发布时间】:2018-12-31 04:40:57
【问题描述】:

目前正在 swift 中使用场景工具包开发游戏。我在SKScene 中添加了一个操纵杆,然后将其附加到我的场景工具包游戏场景中。用于控件的典型 HUD 叠加层。

    let hudScene = SKScene(size: view.frame.size)
    scnView.overlaySKScene = hudScene

我还为hudScene 添加了一个操纵杆,并想添加一些按钮。现在,在我将手势识别器添加到我的主游戏场景之前,所有这些都可以正常工作。一旦我这样做了,与hudScene 的所有点击交互都会被完全忽略。即使我点击操纵杆并记录在该位置点击了哪个节点,它也会为我提供游戏场景中的节点并完全忽略hudScene 中的节点。

谁能提供任何关于为什么会发生这种情况的见解?

作为参考,操纵杆的触摸事件是从this library实现的,我的手势识别器是这样实现的:

    let touchDownRec = UILongPressGestureRecognizer(target: self, action: #selector(didTouchDown(_:)) )
    touchDownRec.minimumPressDuration = 0
    touchDownRec.numberOfTouchesRequired = 1
    scnView.addGestureRecognizer(touchDownRec)

【问题讨论】:

  • 玩了一段时间后,如果我在我的游戏场景中实现另一组touchesBegantouchesMoved 等,则操纵杆和场景触摸都会重新调整。因此,当我使用 UILongPressGestureRecognizer 时,它看起来会覆盖操纵杆的 touchesBegantouchesMoved 等。

标签: ios swift scenekit


【解决方案1】:

我遇到了同样的问题...您必须将 touchesBegan 替换为 TapGesture,或者将 UILongPressGestureRecognizer 替换为 touchesEnded,但第一个选项更精确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2017-04-23
    • 2013-03-29
    • 2018-09-14
    • 2013-05-28
    相关资源
    最近更新 更多