前提・実現したいこと
Unityで、Photon(PUN2)を使ってPC(Unity Editor)とOculus goを通信させたい。
単純にMain Cameraを消してOculus IntegrationのOVRCameraRigを追加すると、PC側もOVRCameraRigのカメラが適用されてしまうので、どうにかしてMain CameraをPhotonのCamera Workスクリプトを使ってOVRCameraRigのCenter Eye Anchorと同期させたい。
発生している問題・エラーメッセージ
UnityでPUN2で通信する際、Oculus Goの方で、PUN2のCamera Workスクリプトが機能せず、Main Cameraの位置が変化しませんでした。Unity Editor上ではCamera Workが機能しました。
試したこと
環境はPUN2のマルコポーロチュートリアル(https://doc.photonengine.com/ja-jp/pun/v2/demos-and-tutorials/pun-basics-tutorial/intro)と同じです。
- Oculus IntegrationのOVRCameraRigをPUN2のプレイヤーとして、OVRCameraRigスクリプトのDisable Camera Anchor Camerasをチェックした上で、Center Eye AnchorにCamera Workをアタッチした。OVRCameraRigにはPhoton ViewとPhoton Transfrom Viewをアタッチしてあります。
OVRCameraRigにアタッチしたスクリプト
C#
1 [SerializeField]private CameraWork _camWork; 2 3 private PhotonView _photonView; 4 // Start is called before the first frame update 5 void Start() { 6 _photonView = GetComponent<PhotonView>(); 7 if (_photonView.IsMine) { 8 _camWork.OnStartFollowing(); 9 } 10 }
_camWorkには、Center Eye AnchorにアタッチしたCamera Workを入れてあります。
- 単純に、Main CameraにOVRCameraRigのCenter Eye Anchorのtransform.positionとtransform.rotationを同期させるスクリプトをアタッチした。
Main Cameraにアタッチしたスクリプト
C#
1 public Transform traceTransform { get; set; } 2 3 // Update is called once per frame 4 void Update() { 5 if (!traceTransform) 6 return; 7 transform.position = traceTransform.position; 8 transform.rotation = traceTransform.rotation; 9 }
OVRCameraRigにアタッチしたスクリプト
C#
1 private PhotonView _photonView; 2 // Start is called before the first frame update 3 void Start() { 4 _photonView = GetComponent<PhotonView>(); 5 var mainCamera = GameObject.Find("Main Camera").GetComponent<VrMainCam>(); 6 if (_photonView.IsMine) { 7 mainCamera.traceTransform = transform; 8 } 9 }
どちらの案でも、Oculus Go側にビルドしてみると、Main Cameraがデフォルト位置から動きませんでした。
補足情報(FW/ツールのバージョンなど)
Unityのバージョン: 2018.4.6f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。