Advertisement
leomovskii

PlayerController

Feb 15th, 2025
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.75 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class PlayerController : MonoBehaviour {
  4.  
  5.     public float speed;
  6.     public float jumpHeight;
  7.     public float gravity = 20f;
  8.  
  9.     [Space]
  10.  
  11.     public Transform cameraTransform;
  12.     public float horizontalSensitivity = 1f;
  13.     public float verticalSensitivity = 1f;
  14.     public float pitchMin = -70f;
  15.     public float pitchMax = 80f;
  16.  
  17.     private CharacterController _controller;
  18.     private Vector3 _input;
  19.     private Vector3 _verticalVelocity;
  20.     private Vector3 _yawVector;
  21.     private Vector3 _currentPitch;
  22.  
  23.     private void Start() {
  24.         Cursor.lockState = CursorLockMode.Locked;
  25.         Cursor.visible = false;
  26.  
  27.         _controller = GetComponent<CharacterController>();
  28.         _currentPitch = cameraTransform.localEulerAngles;
  29.     }
  30.  
  31.     private void Update() {
  32.         MoveUpdate();
  33.         LookUpdate();
  34.     }
  35.  
  36.     private void MoveUpdate() {
  37.         bool isGrounded = _controller.isGrounded;
  38.  
  39.         _input.x = Input.GetAxis("Horizontal");
  40.         _input.z = Input.GetAxis("Vertical");
  41.         _input.Normalize();
  42.  
  43.         if (_verticalVelocity.y < -2f && isGrounded)
  44.             _verticalVelocity.y = -1f;
  45.  
  46.         Vector3 moveVector = transform.forward * _input.z + transform.right * _input.x;
  47.         _controller.Move(speed * Time.deltaTime * moveVector);
  48.  
  49.         if (Input.GetKeyDown(KeyCode.Space) && isGrounded) {
  50.             _verticalVelocity.y = Mathf.Sqrt(jumpHeight * 2f * gravity);
  51.         }
  52.  
  53.         _verticalVelocity.y -= gravity * Time.deltaTime;
  54.         _controller.Move(_verticalVelocity * Time.deltaTime);
  55.     }
  56.  
  57.     private void LookUpdate() {
  58.         _yawVector.y = Input.GetAxis("Mouse X") * horizontalSensitivity;
  59.         float pitch = Input.GetAxis("Mouse Y") * verticalSensitivity;
  60.  
  61.         transform.Rotate(_yawVector);
  62.  
  63.         _currentPitch.x = Mathf.Clamp(_currentPitch.x - pitch, pitchMin, pitchMax);
  64.         cameraTransform.localEulerAngles = _currentPitch;
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement