Advertisement
illiden

Untitled

Feb 12th, 2023
920
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.86 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class CharacterMovement : MonoBehaviour
  4. {
  5.     [SerializeField] private CharacterController _characterController;
  6.     [SerializeField] private Camera _camera;
  7.     [SerializeField] private float _moveSpeed;
  8.     [SerializeField] private float _rotationSpeedHorizontal;
  9.     [SerializeField] private float _rotationSpeedVertical;
  10.     [SerializeField] private float _minRotationX;
  11.     [SerializeField] private float _maxRotationX;
  12.  
  13.     private void Update()
  14.     {
  15.         Move();
  16.         RotationHorizontal();
  17.     }
  18.  
  19.     private void LateUpdate()
  20.     {
  21.         RotationVertical();
  22.     }
  23.  
  24.     private void Move()
  25.     {
  26.         float inputX = Input.GetAxis("Horizontal");
  27.         float inputZ = Input.GetAxis("Vertical");
  28.         Vector3 moveDirection = transform.forward * inputZ + transform.right * inputX;
  29.         _characterController.Move(moveDirection * _moveSpeed * Time.deltaTime);
  30.     }
  31.  
  32.     private void RotationHorizontal()
  33.     {
  34.         float rotationInputY = Input.GetAxis("Mouse X");
  35.         transform.Rotate(Vector3.up * rotationInputY * _rotationSpeedHorizontal * Time.deltaTime);
  36.     }
  37.  
  38.     private void RotationVertical()
  39.     {
  40.         float rotationInputX = Input.GetAxis("Mouse Y");
  41.  
  42.         _camera.transform.Rotate(Vector3.left * rotationInputX * _rotationSpeedVertical * Time.deltaTime);
  43.  
  44.         Vector3 localRotation = _camera.transform.localEulerAngles;
  45.         localRotation.x = ClampAngle(localRotation.x, _minRotationX, _maxRotationX);
  46.         localRotation.y = 0;
  47.         localRotation.z = 0;
  48.         _camera.transform.localEulerAngles = localRotation;
  49.     }
  50.  
  51.     private float ClampAngle(float angle, float min, float max)
  52.     {
  53.         if (angle < 0)
  54.             angle += 360f;
  55.         if (angle > 180f)
  56.             return Mathf.Max(angle, 360f + min);
  57.         return Mathf.Min(angle, max);
  58.     }
  59. }
  60.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement