iOSアプリに出力した場合にもz周り傾きによってmainCameraが移動するようにしたい!
unityを使い、iphoneの傾きをジャイロで検知して、障害物を避けるゲームを作ろうと思っています。
unity上でmainCameraに、zのRotationに合わせてx方向に移動するようにScriptを付けて設定しました。unity上でビルドして、unity remoteにてiphoneを繋ぎ、確認してみたところきちんとx方向に移動してくれました。
ただ、buildしてiPhoneにアプリとして出力し、アプリを起動してみたところ、x方向に移動してくれませんでした。
なにが原因でビルドした場合とiOS実機での動きの違いのか全くわかりません。どなたか教えていただきませんでしょうか?
発生している問題・エラーメッセージ
ビルドした場合とアプリ出力した場合とで違いが生じる
該当のソースコード
C#
1//z周り傾きによって平行移動する用 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class maincameranityokusetu : MonoBehaviour { 7 8 9 public float moveSpeed = 2.0f; 10 public float moveAngleZ = 20.0f; 11 [SerializeField] public float minx = 3.0f; 12 [SerializeField] public float maxx = 3.0f; 13 public float zoffset = 0.0f; 14 15 // Use this for initialization 16 void Start() 17 { 18 zoffset = this.transform.position.z; 19 } 20 21 // Update is called once per frame 22 void Update() 23 { 24 25 // 1.カメラの傾きを取得 26 float z = this.transform.eulerAngles.z; 27 28 29 // 2.ある角度以内であれば前進させる 30 if (-90.0f < z - 360 && z - 360 < -moveAngleZ) 31 { 32 moveForward(z - 360); 33 } 34 else if (moveAngleZ <= z && z < 90.0f) 35 { 36 moveForward(z); 37 } 38 Clamp(); 39 40 } 41 42 private void moveForward(float i) 43 { 44 Vector3 direction = new Vector3(1, 0, 0).normalized * moveSpeed * i * Time.deltaTime; 45 Quaternion rotation = Quaternion.Euler(new Vector3(0, 0, -this.transform.rotation.eulerAngles.z)); 46 this.transform.Translate(rotation * direction); 47 this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y, zoffset); 48 49 50 } 51 52 void Clamp() 53 { 54 Vector3 pos = this.transform.position; 55 pos.x = Mathf.Clamp(pos.x, minx, maxx); 56 this.transform.position = pos; 57 58 } 59 60 61} 62
C#
1//iphoneのジャイロセンサで傾きを検知するよう 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class Iphonekatamuikenti : MonoBehaviour { 7 8 void Start() 9 { 10 Input.gyro.enabled = true; 11 } 12 13 void Update() 14 { 15 Quaternion gattitude = Input.gyro.attitude; 16 gattitude.x *= -1; 17 gattitude.y *= -1; 18 transform.localRotation = 19 Quaternion.Euler(90, 0, 0) * gattitude; 20 } 21} 22
試したこと
iphone 自身がzのRotationをジャイロで検知しているか確認してみようと思い、z周りのrotationを常にtextとして出し、ゲーム起動中に確認してみたところ、アプリ起動中もきちんとzのRotationを検知していました。
補足情報(FW/ツールのバージョンなど)
【作業環境】
Unity:2018.2.5f1
OS:MacOSMojave(iphoneはiOS 12.1)
コードエディタ:Visual Studio
Xcode ver 10.1
あなたの回答
tips
プレビュー