前提・実現したいこと
私はunityとC#を使い一人称視点のゲームを作っています。
そこでカメラの角度制限をつけようとしたところ以下の二つの問題が発生しています。
発生している問題・エラーメッセージ
1.上方向のカメラの角度を90度で制限したいが90度を超えて駆動してしまう
2.下方向にカメラを動かすと指定した40度で止まるがそれ以上動かそうとするとカメラのY軸が回転してしまう
該当のソースコード
C#
1//プログラム上から関係のあるところのみ抜粋 2 public Transform verRot; 3 public Transform horRot; 4 5 // Use this for initialization 6 void Start () { 7 verRot = transform.parent; 8 horRot = GetComponent<Transform>(); 9 } 10 11 // Update is called once per frame 12 void Update() { 13 float X_Rotation = Input.GetAxis("Mouse X"); 14 float Y_Rotation = Input.GetAxis("Mouse Y"); 15 float mouseLogY = 0; 16 verRot.transform.Rotate(0, -X_Rotation, 0); 17 if (horRot.rotation.eulerAngles.x < 40 || horRot.rotation.eulerAngles.x > -90) 18 { 19 horRot.transform.Rotate(-Y_Rotation, 0, 0); 20 mouseLogY = Y_Rotation; 21 } 22 else if (horRot.rotation.eulerAngles.x > 0) 23 { 24 if (Y_Rotation < mouseLogY) 25 { 26 horRot.transform.Rotate(-Y_Rotation, 0, 0); 27 } 28 29 } 30 else if (horRot.rotation.eulerAngles.x < 0) 31 { 32 if (Y_Rotation > mouseLogY) 33 { 34 horRot.transform.Rotate(-Y_Rotation, 0, 0); 35 } 36 } 37 if (horRot.rotation.eulerAngles.x > 40 && horRot.rotation.eulerAngles.x < 180 || horRot.rotation.eulerAngles.x < -90) 38 { 39 if(horRot.rotation.eulerAngles.x > 0) 40 { 41 horRot.transform.eulerAngles = new Vector3(40, 0, 0); 42 } 43 else if(horRot.rotation.eulerAngles.x < 0) 44 { 45 horRot.transform.eulerAngles = new Vector3(-90, 0, 0); 46 } 47 } 48 49 } 50
補足情報
Unity 2017.3.1f1 (64-bit)を使いC#はvisual studioを使用
また、上記のプログラムはウェブサイトを参照しています。
どうかご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/19 22:39