Advertisement
SnowPhoenix347

Untitled

Nov 21st, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.66 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 = 3f;
  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.         Vector3 movementInput = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, 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.z + right * movementInput.x).normalized;
  49.         Vector3 gravityVector = Vector3.zero;
  50.  
  51.         if (!characterController.isGrounded)
  52.         {
  53.             gravityVector.y -= gravity;
  54.         }
  55.  
  56.         if (desiredMoveDirection != Vector3.zero)
  57.         {
  58.             transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(desiredMoveDirection),
  59.                 rotationSpeed);
  60.         }
  61.  
  62.         float targetSpeed = walkSpeed * movementInput.magnitude;
  63.  
  64.         if (Input.GetKey(KeyCode.LeftShift))
  65.         {
  66.             targetSpeed = runSpeed * movementInput.magnitude;
  67.         }
  68.  
  69.         currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, speedSmoothTime);
  70.  
  71.         characterController.Move(desiredMoveDirection * currentSpeed * Time.deltaTime);
  72.         characterController.Move(gravityVector * Time.deltaTime);
  73.  
  74.         animator.SetFloat("MovementSpeed", 0.5f*movementInput.magnitude, speedSmoothTime, Time.deltaTime);
  75.         if (Input.GetKey(KeyCode.LeftShift))
  76.         {
  77.             animator.SetFloat("MovementSpeed", 1f * movementInput.magnitude, speedSmoothTime, Time.deltaTime);
  78.         }
  79.  
  80.         if (Input.GetKeyDown(KeyCode.Space) && characterController.isGrounded)
  81.         {
  82.             gravityVector.y = jumpForce;
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement