1

有没有办法在 SceneKit 上获得焦点引擎?我正在尝试构建一个 3d 游戏,其中玩家必须从许多 SceneKit 节点中进行选择,但我找不到让 SCNNodes 焦点的方法。

4

2 回答 2

1

AnSCNNode是一个模型对象,而不是UIView后代(或者更准确地说不符合UIFocusEnvironment),所以我不希望它能够获得焦点。

那么如何选择一个特定SCNNodeSCNView?Apple tvOS SceneKit 模板实现了命中测试,但我看不到用户如何选择他们正在选择的屏幕上的哪个点;没有视觉反馈。模板/演示似乎没有经过深思熟虑。所以这是一些同事和我前几天讨论过的一种方法,但没有尝试实施。

可以有一个SpriteKitSCNView覆盖场景,overlaySKScene. 使用一些手势(可能是长按或播放按钮)切换到“我要选择一个节点”模式。这意味着光标会出现在 上overlaySKScene,并且可以通过遥控器上的手指移动来移动。用户将光标移到正确的节点上,然后...点击?程序获取光标的 SpriteKit 坐标,将其转换回 SceneKit 命中测试输入,并在场景图上执行命中测试。

@vigneshv 指出苹果不鼓励使用游标。这也是我从本周参加技术讲座的人那里听到的。因此,修改后的方法可能是在SKScene. 随着遥控器上的每个动作,执行命中测试。突出显示不可见光标下的节点,但在点击触控板之前不要采取行动。当您第一次切换到节点选择模式时,您甚至可以将不可见的光标放在最大或最中心的节点上,以提供一些初步的视觉反馈。

根据您的节点图,这可能会变得复杂。我可以想象基于SCNNode中心生成一个 Voronoi 图,并使用远程手势从一个多边形移动到另一个多边形。

另一个想法:使用简单的矩形(或十六进制?)网格来跟踪光标,而不是隐藏的、隐含的 Voronoi 图。命中测试变得更加复杂:每个网格单元下可以有多个节点。但是网格变得更容易构建,也更容易导航。

于 2015-12-20T03:51:37.497 回答
0

我知道最初的问题是在 2015 年提出的,但 Apple 在 tvOS 11 中将焦点引擎引入了 SceneKit 和 SpriteKit。请参阅WWDC 2017

于 2019-03-12T13:56:57.143 回答