###前提・実現したいこと
unityのcardboard GoogleVRで
InputTracking.disablePositionalTrackingを使ってカメラを起動時に固定したいです。できるのであるのなら他の方法でもかまいません。
回答よろしくお願いします。
###発生している問題・エラーメッセージ
マニュアルを読んで自分なりにやったのですがスマホからみて画面が傾いたままになっている。
###該当のソースコード
C#
1//MainCameraの親オブジェクトのスクリプト 2using UnityEngine; 3using UnityEngine.VR; 4using System; 5 6public class CameraControl : MonoBehaviour { 7 public Vector3 difference; 8 float differenceZ; 9 10 GameObject kamera; 11 12 // Use this for initialization 13 void Start() { 14 InputTracking.disablePositionalTracking = true; 15 difference = transform.position; 16 differenceZ = difference.z; 17 //デバッグ時に使う 18 GameObject ga = GameObject.FindWithTag("Hello"); 19 TextMesh hum = (TextMesh)(ga.GetComponent<TextMesh>()); 20 hum.text = "x="+ kamera.transform.rotation.x+" y="+kamera.transform.rotation.y+" z="+kamera.transform.rotation.z; 21 22 } 23 24 // Update is called once per frame 25 void Update() 26 { 27 //プレイヤー機にカメラが追従するようになっている 28 if (GameObject.FindWithTag("player") == true) 29 { 30 Vector3 vecP = GameObject.FindWithTag("player").transform.position; 31 Vector3 vec3 = transform.position; 32 vec3.z = vecP.z+differenceZ; 33 transform.position = vec3; 34 } 35 } 36} 37
###試したこと
・InputTracking.disablePositionalTrackingの値をtrueにしたりfalseにしたりした。
・起動時のスマホの方向を反転させた物をVRカメラの親オブジェクトに入れてカメラの傾きを打ち消そうとしたが見当違いな方へいってしまう。VRカメラオブジェクトの向きで同様のことをしてもだめでした。
以下VRカメラの親のオブジェクトのスクリプト
C#
1//3Dシューティングゲームのカメラの親ゲームオブジェクトのソースコードです 2 3//カメラの位置を引く 4using System.Collections; 5using System.Collections.Generic; 6using UnityEngine; 7using UnityEngine.VR; 8using System; 9 10public class CameraControl : MonoBehaviour { 11 public Vector3 difference; 12 float differenceZ; 13 14 GameObject kamera; 15 16 // Use this for initialization 17 void Start() { 18 difference = transform.position; 19 differenceZ = difference.z; 20 //カメラが今向いてる向きを取得 21 kamera = GameObject.FindWithTag("MainCamera"); 22 //反転させる 23 Quaternion hanten=Quaternion.Euler(-kamera.transform.rotation.x,-kamera.transform.rotation.y,kamera.transform.rotation.z); 24 transform.rotation = hanten; 25 } 26 27 // Update is called once per frame 28 int count; 29 void Update() 30 { 31 //プレイヤー機にカメラが追従するようになっている 32 if (GameObject.FindWithTag("player") == true) 33 { 34 Vector3 vecP = GameObject.FindWithTag("player").transform.position; 35 Vector3 vec3 = transform.position; 36 vec3.z = vecP.z+differenceZ; 37 transform.position = vec3; 38 } 39 } 40} 41 42//スマホの方向から 43using UnityEngine; 44using UnityEngine.VR; 45using System; 46 47public class CameraControl : MonoBehaviour { 48 public Vector3 difference; 49 float differenceZ; 50 51 GameObject kamera; 52 53 // Use this for initialization 54 void Start() { 55 difference = transform.position; 56 differenceZ = difference.z; 57 //カメラが今向いてる向きを取得 58 Vector3 trackingPos = 59 InputTracking.GetLocalPosition(VRNode.CenterEye); 60 61 62 //反転させる 63 Quaternion hanten =Quaternion.Euler(-trackingPos[0]*180,-trackingPos[1]*180,-trackingPos[2]*180); 64 transform.rotation = hanten; 65 //デバッグ時に使う 66 GameObject ga = GameObject.FindWithTag("Hello"); 67 TextMesh hum = (TextMesh)(ga.GetComponent<TextMesh>()); 68 hum.text = "x="+ kamera.transform.rotation.x+" y="+kamera.transform.rotation.y+" z="+kamera.transform.rotation.z; 69 70 } 71 72 // Update is called once per frame 73 void Update() 74 { 75 //プレイヤー機にカメラが追従するようになっている 76 if (GameObject.FindWithTag("player") == true) 77 { 78 Vector3 vecP = GameObject.FindWithTag("player").transform.position; 79 Vector3 vec3 = transform.position; 80 vec3.z = vecP.z+differenceZ; 81 transform.position = vec3; 82 } 83 } 84}
###補足情報(言語/FW/ツール等のバージョンなど)
cardboard GoogleVR
android lollipop
GoogleVRForUnity_1.70.0
Unity 2017.1.0f3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/02 07:03