ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

FPSControllerでHMDを使ったときの視線方向を取得

FPSControllerでHMDを使って見たときの視線方向を取得するには、HMDの位置と回転をFirstPersonCharacterのカメラと合わせれば良い。
Rayが何かにヒットしたときに赤色で、そうでないときは青色でデバッグ描画したコードは次の通り。

using UnityEngine.VR;

// カメラ位置方向
Vector3 cameraPos = m_Camera.transform.position;
Vector3 cameraDir = m_Camera.transform.forward;

// HMD位置回転
Vector3 vrPos = InputTracking.GetLocalPosition(VRNode.CenterEye);
Quaternion vrRot = InputTracking.GetLocalRotation(VRNode.CenterEye);

Vector3 pos = cameraPos + vrPos; // 視点
Vector3 dir = vrRot * cameraDir;  // 方向

if (Physics.Raycast(pos, dir)) {
    Debug.DrawRay(pos, dir * 100, Color.red);
}
else {
    Debug.DrawRay(pos, dir * 100, Color.blue);
}