- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class CameraBehaviour : MonoBehaviour
- {
- [SerializeField] private Transform followTarget;
- [SerializeField] private float rotationSpeed = 10f;
- [SerializeField] private float bottomClamp = -40f;
- [SerializeField] private float topClamp = 70f;
- private float cinemachineTargetPitch;
- private float cinemachineTargetYaw;
-
- void Start()
- {
-
- }
-
- void LateUpdate()
- {
- CameraRotation();
- }
- private float GetMouseInput(string axis) => Input.GetAxis(axis) * rotationSpeed * Time.deltaTime;
- private void CameraRotation()
- {
- float mouseX = GetMouseInput("Mouse X");
- float mouseY = GetMouseInput("Mouse Y");
- cinemachineTargetPitch = UpdateRotation(cinemachineTargetPitch, mouseY, bottomClamp, topClamp, true);
- cinemachineTargetYaw = UpdateRotation(cinemachineTargetYaw, mouseX, float.MinValue, float.MaxValue, false);
- ApplyRotations(cinemachineTargetPitch, cinemachineTargetYaw);
- }
- private void ApplyRotations(float pitch, float yaw) => followTarget.rotation = Quaternion.Euler(pitch, yaw, followTarget.eulerAngles.x);
- private float UpdateRotation(float currentRotation, float input, float min, float max, bool isXAxis)
- {
- currentRotation += isXAxis ? -input : input;
- return Mathf.Clamp(currentRotation, min, max);
- }
- }