【3Dゲームエンジン】Unity質問スレッド10at GAMEDEV【3Dゲームエンジン】Unity質問スレッド10 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト370:333 14/07/08 21:23:19.99 baCtLp31.net >>356 レス番号間違えたけどさっきのは329へのレスね 立方体が動き回っていても位置(position)と回転行列(rotation)が分かれば問題ないはず 衝突点と立方体中心の差分を取って回転行列の逆行列を掛ければ333に書いた状態になる(多分) 371:314 14/07/08 22:38:42.03 A3tN0KUo.net >>356 難しく考えすぎだと思う hit.pointはワールド座標ですが 372:transform.InverseTransformPoint(Vector3)でキューブオブジェクトのローカル座標に変換できます 後は(1,0,0),(-1,0,0),(0,1,0),(0,-1,0),(0,0,1),(0,0,-1)との内積を計算して1に最も近いのがヒットした面の法線方向です 立方体なら簡単に分かる問題 void Update () { if(Input.GetMouseButton (0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray,out hit)) { var hitPointLocal = transform.InverseTransformPoint(hit.point); var faces = new Vector3[] { Vector3.right, -Vector3.right, Vector3.up, -Vector3.up, Vector3.forward, -Vector3.forward, }; var face = faces.OrderBy((c) => Mathf.Abs((1.0f - Vector3.Dot(c,hitPointLocal)))).First(); Debug.Log (face); } } } こんな感じでどうでしょうか?(Linq使ってるのでusing System.Linq;を頭に追加してください) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch