HMDの向いている方にObjectを配置する

2022/08/21に公開

目的

  • VR開発をしている
  • ボタンを押した際に出てくるUIパネルなど、HMDの向いている方向にobjectを出現させたいときにすぐ使えるスクリプトが見つからなかったのでまとめる。
public GameObject UIGameobject;
public Transform mainCameraTransform;

public void SetUIPositionCameraFront(GameObject UIGameobject, Transform mainCameraTransform)
{
    Vector3 mainCameraPosition = mainCameraTransform.position;
    
    Vector3 mainCameraRotation = mainCameraTransform.rotation.eulerAngles;
    float mainCameraRotation_YAxis = mainCameraRotation[1];
    
    Vector3 targetOffset = new Vector3((float)Math.Sin(mainCameraRotation_YAxis * Math.PI / 180f), 0, (float)Math.Cos(mainCameraRotation_YAxis * Math.PI / 180f));

    // どのくらいMainCameraから話してオブジェクトを置きたいかによって数字は変更(マジックナンバーになっているので変数化したほうが良いかも)
    UIGameobject.transform.position = mainCameraPosition + targetOffset * 3f;
    UIGameobject.transform.LookAt(mainCameraTransform);
}
  • mainCameraTransformには、XROrigin > CameraOffset > MainCameraをいれる

Discussion