SceneKit でフォーカス エンジンを取得する方法はありますか? プレイヤーが多くの SceneKit ノードから選択する必要がある 3D ゲームを構築しようとしていますが、SCNNodes にフォーカスを与える方法が見つかりません。
2 に答える
AnSCNNode
はモデル オブジェクトであり、UIView
子孫ではありません (より正確には に準拠していませんUIFocusEnvironment
)。
では、特定のものを選択する方法SCNNode
はSCNView
? Apple tvOS SceneKit テンプレートはヒット テストを実装していますが、ユーザーが選択している画面上のポイントをどのように選択できるかわかりません。視覚的なフィードバックはありません。テンプレート/デモはよく考えられていないようです。そこで、先日同僚と議論したアプローチを紹介しますが、実装しようとはしませんでした。
にはSCNView
、SpriteKit オーバーレイ シーンを含めることができますoverlaySKScene
。何らかのジェスチャ (おそらく長押しまたは再生ボタン) を使用して、「ノードを選択しようとしています」モードに切り替えます。つまり、カーソルが に表示さoverlaySKScene
れ、リモコンの指の動きで移動できます。ユーザーが正しいノードにカーソルを移動してから...クリックしますか? プログラムはカーソルの SpriteKit 座標を取得し、それを SceneKit ヒット テスト入力に変換し、シーン グラフでヒット テストを実行します。
@vigneshv は、Apple がカーソルの使用を推奨していないと指摘しています。そして、それは今週の Tech Talks に参加した人々から聞いたことでもあります。そのため、変更されたアプローチは、SKScene
. リモコンを動かすたびに、ヒット テストを実行します。非表示カーソルの下にあるノードを強調表示しますが、トラックパッドをクリックするまでアクションを実行しないでください。最初にノード選択モードに切り替えるとき、非表示のカーソルを最大または最も中心的なノードに置いて、予備的な視覚的フィードバックを提供することもできます。
ノード グラフによっては、これが複雑になる可能性があります。中心に基づいてボロノイ図を生成し、SCNNode
リモート ジェスチャを使用して多角形から多角形に移動することを想像できます。
もう 1 つのアイデア: 隠された暗黙のボロノイ図の代わりに、単純な長方形 (または 16 進数?) グリッドを使用してカーソルを追跡します。ヒット テストはより複雑になります。各グリッド セルの下に複数のノードを配置できます。しかし、グリッドは構築しやすくなり、ナビゲートしやすくなります。