Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。290件0プログラミング初心者で、swiftで開発を始めた者です。SceneKitを使い、ジェスチャーで回転可能な、立方体のジオメトリを作成しました。次に、この立方体の各面をタップした時に別のViewControllerに画面遷移させたいのですが、方法が分からず、困っています。SCNHitTestResultのfaceIndexプロパティを使い画面遷移を試みたが、faceIndexが返す値を「各面に0~5の値が割り当てられている」と間違える。faceIndexが返す値を調べる為にprintを使ってシュミレータで画面タップした時に値を表示するようにした。結果、各面に0と1の値が表示された。(chamferRadiusが0の場合)各面で値が被るため、個別の画面遷移が出来ない。SCNGeometryに対して複数のSCNMaterialを設定した場合、同時にSCNGeometryElementも複数になり、SCNHitTestResultのプロパティfaceIndexでは、各面0と1の値しか返さない事が判明した。そこで、同じSCNHitTestResultのプロパティであるgeometryIndexを使ったところ、各面の値を取得することが出来た。画面遷移のコードに取得した値を割り当てて、「立方体ジオメトリの各面タップ時に別々に画面遷移する」ことに成功した。返答有り難うございます。faceIndexプロパティを使ってみましたが、各面毎に画面遷移出来ません。票1追記1に対して:引用プログラムコード中の、プロパティfaceIndexに関連するコメント行として、「//初めにヒットしたオブジェクトの面のインデックスを返す」と書いていらっしゃいますが、この「オブジェクトの面」とは、なにを指しているのでしょうか?その考察をどうやら質問者さんはなさっていないようで、この考察をしなければ、解決するものも解決しないままとなってしまいます。変更後のコードをすこし形を変えて、faceIndexと「オブジェクトの面」を調べるプログラムにしてみましょう。}}Xcodeのプロジェクトから、シミュレータないし実機を起動し、Xcodeのコンソールに、print()関数から出力されるfaceIndexの値を、立方体の上をあちこちタップして調べてください。立方体SCNBoxのchamferRadiusを0すなわち角を丸めない状態だと、下図のような結果になります。下図は立方体を展開したものです。立方体を、三角形ポリゴンで分割した各面の番号が、faceIndexであることがわかります。※chamferRadiusを0より大きくして角を丸くすると、総ポリゴン数が増えるので、立方体の面を構成するポリゴンの番号は、変化します。ご質問の追記2に対して:ひとつのジオメトリ(SCNGeometry)に対して、複数のマテリアル(SCNMaterial)を設定すると、「各面に0と1の値が表示」されることになるようです。これは、同時にエレメント(SCNGeometryElement)も複数になるということが推論できます。SceneKitフレームワークのリファレンスを読んでも、そのようなことを書いている箇所を見つけられないので、わかりにくいのですが、もしこの推論が間違っていなければ、SCNHitTestResultのプロパティgeometryIndexを使えば、立方体の各面がそれぞれ別個のエレメントになっているはずなので、面の識別ができることになります。「追記1に対して:」のサンプルコードを次のように書き換えてみました。}}これで各面の識別ができるか、ご確認ください。個の銅バッジ丁寧な回答有り難うございます。立方体の各面に0~5の番号が割り振られているものと思い込んでいました。今後は調べるように注意します。上記の方法で、faceIndexの値を調べてみましたが、表示されるのは0~11の番号ではなく、各面0と1の番号で、それが6面存在する。これだとfaceIndexの番号が被っているため、画面遷移を別々に割り当てることは出来ません。何か方法があればご教授いただけないでしょうか?自分で調べた限りでは有効な方法を見つけることが出来ませんでした。8:26その「上記の方法で、faceIndexの値を調べてみましたが、表示されるのは0~11の番号ではなく、各面0と1の番号で、それが6面存在する。」という現象が発生するソースコードを示してください。現在質問者さんが提示しているコードでは、そのようになりません。faceIndexの値は、0,1,50,51,100,101,150,151,200,201,250,251が出力されます。16:41chamferRadiusを0にした結果をコメントしていました。誤解を招き申し訳有りませんでした。現在のコードを質問文に追記しますが、やはり各面0と1の番号しか表示されません。いう仕様ではなく何か原因があるのでしょうか。1:552日前回答いただいたコードで確認したところ、各面別々(0~5)の値が得られ、無事解決致しました。最終的なコードを追記しました。回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。会を開催します🎉サイトの未翻訳箇所を見つけて、もくもく会で直しましょう関連する質問2UIViewにタップ、ロングタップの動作を割り当てる方法3SceneKitを使ってルービックキューブを回転させたい1storyboardの遷移でエラーが出ます。(segueを使用しない方法で実装)1UICollectionviewのセルのタップを優先させたい。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。