発生している問題・実現したいこと
現在、カメラ単体を移動、視野回転出来る状態(FPSCam)を目指しています。
問題は通常移動、視野回転別々であれば描画に何ら問題がないのですが、移動+視野回転となると、静止物体の描画にブレ(コマ落ちのような状態)が生じます。
色々と調べ、スクリプトの実行順序であったり(カメラの描画処理を最後に回す)、プロジェクトのFPSを見直したり(60FPS、FPS制限なしの切り替え)、Unityのバージョンを変更してみたり、別PCで作業なども試してみたのですが、解決に至らず悩んでいます。
カメラの移動をtrasform.positionで変更しているので、これが原因なのかなとも思っていますが、Rigidbodyはなしでオブジェクトを貫通して移動できるようにしたいため、他の移動方法が分かりません。
どなたか同じ症状に陥った方などはいらっしゃらないでしょうか?
解決策をお待ちしております。
該当のソースコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class FirstPersonCam : MonoBehaviour 6{ 7 Vector3 startPos; 8 private Camera Cam; 9 public float AddSpeed; 10 [SerializeField] private float m_TiltMax = 60f; 11 [SerializeField] private float m_TiltMin = 50f; 12 Vector3 InputMoveValue; 13 void Start() 14 { 15 Cam = this.gameObject.GetComponent<Camera>(); 16 if(Cam == null)return; 17 InputMoveValue += transform.position; 18 } 19 20 void Update() 21 { 22 CamMoves(); 23 } 24 25 void LateUpdate() 26 { 27 if(Input.GetMouseButton(1)) 28 { 29 rotateCmaeraAngle(); 30 } 31 } 32 33 void CamMoves()//カメラ移動 34 { 35 startPos = transform.position; 36 37 InputMoveValue += transform.right * Input.GetAxis("Horizontal") * AddSpeed * Time.deltaTime; 38 InputMoveValue += transform.forward * Input.GetAxis("Vertical") * AddSpeed * Time.deltaTime; 39 transform.position = Vector3.Lerp(startPos,InputMoveValue,5f * Time.deltaTime); 40 } 41 42 private void rotateCmaeraAngle()//カメラ回転 43 { 44 Vector3 angle = new Vector3( Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y")) * 2f; 45 46 if(Cam.fieldOfView <= 40.0f) 47 { 48 angle.y = angle.y * 0.6f; 49 } 50 transform.eulerAngles += new Vector3(-angle.y, angle.x); 51 float angle_x = 180f <= transform.eulerAngles.x ? transform.eulerAngles.x - 360 : transform.eulerAngles.x; 52 angle_x = Mathf.Clamp(angle_x, -m_TiltMin, m_TiltMax); 53 54 transform.eulerAngles = new Vector3 (angle_x, transform.eulerAngles.y, 0); 55 } 56}
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.13f1 LTS版
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。