実現したいこと
視点移動を正常に動作するようにしてほしい。
発生している問題・分からないこと
やりたいことは、標準的なFPS操作(右スティックの左右で体ごと回転、上下で首だけ回転)です。左ステックで移動は出来てるのですが、右ステックは上を向いたら左を向いて、下を向いたら右を向く、そして左右の入力は動作しないという問題が起きています。
Playerを動かして、2つのカメラが入ってるCameraBoxを視点移動として使おうと考えています。
Unityの設定がおかしいだとかGPTでは言ってたのですがわかりません。

該当のソースコード
C#
1using UnityEngine; 2 3public class PlayerController : MonoBehaviour 4{ 5 [Header("設定")] 6 public float moveSpeed = 5f; 7 public float lookSensitivity = 150f; 8 public Transform cameraBox; // ここにCameraBoxをドラッグする 9 10 private float verticalRotation = 0f; 11 12 void Start() 13 { 14 // マウスをロック(コントローラー操作でも推奨) 15 Cursor.lockState = CursorLockMode.Locked; 16 } 17 18 void Update() 19 { 20 // --- 1. 移動 (左スティック) --- 21 float mX = Input.GetAxisRaw("Horizontal"); 22 float mY = Input.GetAxisRaw("Vertical"); 23 24 if (Mathf.Abs(mX) > 0.1f || Mathf.Abs(mY) > 0.1f) 25 { 26 // Player本体の向きを基準に移動 27 Vector3 moveDir = (transform.forward * mY) + (transform.right * mX); 28 transform.position += moveDir.normalized * moveSpeed * Time.deltaTime; 29 } 30 31 // --- 2. 視点移動 (右スティック) --- 32 // --- 右スティック --- 33 float hLook = Input.GetAxisRaw("Joystick Axis 4"); // 上下 34 float vLook = -Input.GetAxisRaw("Joystick Axis 5"); // 左右 35 36 // 左右回転 37 if (Mathf.Abs(vLook) > 0.1f) 38 { 39 transform.Rotate(Vector3.up * vLook * lookSensitivity * Time.deltaTime); 40 } 41 42 // 上下回転 43 if (cameraBox != null && Mathf.Abs(hLook) > 0.1f) 44 { 45 verticalRotation -= hLook * lookSensitivity * Time.deltaTime; 46 verticalRotation = Mathf.Clamp(verticalRotation, -80f, 80f); 47 cameraBox.localRotation = Quaternion.Euler(verticalRotation, 0, 0); 48 } 49 50 } 51}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
GPTやGeminiでもコントローラーとの割り当てが違うのではないかなどと言われあれこれ試しましたが解決せず右ステックだけおかしいという結論になりました。
補足
特になし
回答1件
あなたの回答
tips
プレビュー
2025/12/14 11:43