Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class PlayerController : MonoBehaviour {
- public float speed;
- public float jumpHeight;
- public float gravity = 20f;
- [Space]
- public Transform cameraTransform;
- public float horizontalSensitivity = 1f;
- public float verticalSensitivity = 1f;
- public float pitchMin = -70f;
- public float pitchMax = 80f;
- private CharacterController _controller;
- private Vector3 _input;
- private Vector3 _verticalVelocity;
- private Vector3 _yawVector;
- private Vector3 _currentPitch;
- private void Start() {
- Cursor.lockState = CursorLockMode.Locked;
- Cursor.visible = false;
- _controller = GetComponent<CharacterController>();
- _currentPitch = cameraTransform.localEulerAngles;
- }
- private void Update() {
- MoveUpdate();
- LookUpdate();
- }
- private void MoveUpdate() {
- bool isGrounded = _controller.isGrounded;
- _input.x = Input.GetAxis("Horizontal");
- _input.z = Input.GetAxis("Vertical");
- _input.Normalize();
- if (_verticalVelocity.y < -2f && isGrounded)
- _verticalVelocity.y = -1f;
- Vector3 moveVector = transform.forward * _input.z + transform.right * _input.x;
- _controller.Move(speed * Time.deltaTime * moveVector);
- if (Input.GetKeyDown(KeyCode.Space) && isGrounded) {
- _verticalVelocity.y = Mathf.Sqrt(jumpHeight * 2f * gravity);
- }
- _verticalVelocity.y -= gravity * Time.deltaTime;
- _controller.Move(_verticalVelocity * Time.deltaTime);
- }
- private void LookUpdate() {
- _yawVector.y = Input.GetAxis("Mouse X") * horizontalSensitivity;
- float pitch = Input.GetAxis("Mouse Y") * verticalSensitivity;
- transform.Rotate(_yawVector);
- _currentPitch.x = Mathf.Clamp(_currentPitch.x - pitch, pitchMin, pitchMax);
- cameraTransform.localEulerAngles = _currentPitch;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement