前提・実現したいこと
シーンが切り替わる瞬間当たりにマウスを上(?)に瞬発的に動かすと、切り替わった後のカメラが上下左右反転してしまうのを直したい。
発生している問題・エラーメッセージ
たまに発生していたFPSのカメラの反転のタイミングがシーンが切り替わるときにマウスが素早く(?)動いている時に起きる現象だとまでは分かりました。
https://www.youtube.com/watch?v=Wqav1Cqel_U
その後、カメラの回転軸を観察すると、通常は回転のz軸は0なのですが、反転すると不思議な数字と、ほぼ180になっています。
https://www.youtube.com/watch?v=K0_p0wxlwrE
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseCamera : MonoBehaviour
{
[SerializeField]
float viewAngle;
public float mousespeed;
float _inputX, _inputY;
// Start is called before the first frame update void Start() { //カーソルをロックする Cursor.lockState = CursorLockMode.Locked; //カーソルを見えなくする Cursor.visible = false; } // Update is called once per frame void Update() { _inputX = Input.GetAxis("Mouse X"); _inputY = Input.GetAxis("Mouse Y"); Rotate(_inputX*mousespeed, _inputY*mousespeed*-1, viewAngle); } void Rotate(float _inputX, float _inputY, float limit) { float maxLimit = limit, minLimit = 360 - maxLimit; //X軸回転 var localAngle = transform.localEulerAngles; localAngle.x += _inputY; if (localAngle.x > maxLimit && localAngle.x < 180) localAngle.x = maxLimit; if (localAngle.x < minLimit && localAngle.x > 180) localAngle.x = minLimit; transform.localEulerAngles = localAngle; //Y軸回転 var angle = transform.eulerAngles; angle.y += _inputX; transform.eulerAngles = angle; }
}
試したこと
初心者ながら検索してカメラの回転をリセットしたり、z軸を0から始めるスクリプトを書き加えたりしてみましたがダメでした。
タイミング会う時しか出ないバクなのですが、解決しないといけないものであるので、その方法を教えてください。
どうぞ宜しくお願い申し上げます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/10 21:42