Advertisement
SnowPhoenix347

Untitled

Nov 21st, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.55 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Microsoft.Win32.SafeHandles;
  4. using UnityEngine;
  5.  
  6. public class CharacterMovement : MonoBehaviour
  7. {
  8.     [SerializeField] private float walkSpeed = 2f;
  9.     [SerializeField] private float runSpeed = 4f;
  10.     [SerializeField] private float jumpForce = 4f;
  11.     private float currentSpeed = 0f;
  12.     private float speedSmoothVelocity = 0f;
  13.     private float speedSmoothTime = 0.1f;
  14.     private float rotationSpeed = 0.1f;
  15.     private float gravity = 1f;
  16.  
  17.     private Transform mainCameraTransform;
  18.  
  19.     private CharacterController characterController;
  20.     private Animator animator;
  21.  
  22.     private void Start()
  23.     {
  24.         characterController = GetComponent<CharacterController>();
  25.         animator = GetComponent<Animator>();
  26.  
  27.         mainCameraTransform = Camera.main.transform;
  28.     }
  29.  
  30.     private void Update()
  31.     {
  32.         Move();
  33.     }
  34.  
  35.     private void Move()
  36.     {
  37.         Vector2 movementInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized;
  38.  
  39.         Vector3 forward = mainCameraTransform.forward;
  40.         Vector3 right = mainCameraTransform.right;
  41.  
  42.         forward.y = 0;
  43.         right.y = 0;
  44.  
  45.         forward.Normalize();
  46.         right.Normalize();
  47.  
  48.         Vector3 desiredMoveDirection = (forward * movementInput.y + right * movementInput.x).normalized;
  49.         Vector3 gravityVector = Vector3.zero;
  50.  
  51.         if (Input.GetKeyDown(KeyCode.Space))
  52.         {
  53.             gravityVector.y = jumpForce;
  54.         }
  55.  
  56.         gravityVector.y -= gravity;
  57.  
  58.         if (desiredMoveDirection != Vector3.zero)
  59.         {
  60.             transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(desiredMoveDirection),
  61.                 rotationSpeed);
  62.         }
  63.  
  64.         float targetSpeed = walkSpeed * movementInput.magnitude;
  65.  
  66.         if (Input.GetKey(KeyCode.LeftShift))
  67.         {
  68.             targetSpeed = runSpeed * movementInput.magnitude;
  69.         }
  70.  
  71.         currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, speedSmoothTime);
  72.  
  73.         characterController.Move(desiredMoveDirection * currentSpeed * Time.deltaTime);
  74.         characterController.Move(gravityVector * Time.deltaTime);
  75.  
  76.         animator.SetFloat("MovementSpeed", 0.5f * movementInput.magnitude, speedSmoothTime, Time.deltaTime);
  77.  
  78.         if (Input.GetKey(KeyCode.LeftShift))
  79.         {
  80.             animator.SetFloat("MovementSpeed", 1f * movementInput.magnitude, speedSmoothTime, Time.deltaTime);
  81.         }
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement