Can I make SCNBox tappable and interactive?(我能让SCNBox变得可点击和互动吗?)
问题描述
我正在尝试使用SwiftUI中的SCNBox创建旋转立方体,您可以在其中点击框的每一侧,不同的弹出屏幕/视图将出现文本等。我有旋转的SCNBox立方体,但如何使其可点击和交互,以及如何使其重定向到其他视图?
这就是我当前尝试将Box场景插入到SwiftUI视图中的方法,然后该视图将进入正在退出的应用程序的视图层次结构。
但是,此代码无法编译-它在以下行中显示,在没有更多上下文的情况下,表达式类型不明确:
推荐答案
下面是一个使用SCNBox
可能有帮助的示例。
BoxNode
是使用SCNBox
作为其几何体的自定义SCNNode
。每一面都设置了不同的颜色,以便很容易看到,如果您有想要显示的更精细的东西,可以使用UIImage
s。由于我们正在使用SceneKit
、UIKit
和SwiftUI
,因此请确保在需要的位置导入它们。
然后在自定义SCNScene
中使用它,BoxNode
将BoxNode
添加为根节点,并设置旋转动画并旋转多维数据集。
GameScene
设置在SCNView
内的UIViewController
内。SCNView
固定在视图控制器的边缘,我们覆盖touchesBegan
,以便可以与SceneView
交互。我还创建了一个变量sideTapped
,因为这将允许您注入回调,这样您就可以知道立方体上的哪一侧被点击了。
因为我们在内部SwiftUI
使用它,所以我们需要一个UIViewControllerRepresentable
。这里我们将sideTapped
函数传递给GameSceneViewController
。
现在我们可以将其添加到SwiftUI
视图。
最终结果应如下所示:
点击立方体的一侧将打印一个从0到5的数字,表示您点击的是哪一侧。根据所使用的材料,数字应与材料的索引相对应,因此在本例中:- 0为红色
- %1为黄色
- %2为绿色
- 3为蓝色
- 4为紫色
- 5为棕色
这应该会为您提供一些您应该能够关闭导航的内容。
我不是SceneKit方面的专家,但周末我一直在使用它,并且基本上完成了您所要求的操作。希望这能给你一个想法,有很多方法可以实现你想做的事情,这只是一种可能性。
如果您想要将立方体滑动到变更面,而不是让它自己旋转,您可能需要查看此answer。
这篇关于我能让SCNBox变得可点击和互动吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!