Advertisement
Guest User

PlayerCharacterController

a guest
Jan 26th, 2020
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.65 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. [RequireComponent(typeof(CharacterController), typeof(EffectorHandlerComponent))]
  4. public class PlayerCharacterController : MonoBehaviour
  5. {
  6.     [SerializeField] float moveSpeed = 8;
  7.     [SerializeField] float gravity = 9.81f;
  8.  
  9.     CharacterController characterController;
  10.     EffectorHandlerComponent effectorHandlerComponent;
  11.  
  12.     private void Awake()
  13.     {
  14.         characterController = GetComponent<CharacterController>();
  15.         effectorHandlerComponent = GetComponent<EffectorHandlerComponent>();
  16.     }
  17.  
  18.     public void Update()
  19.     {
  20.         //Input direction is 0 if we do nothing
  21.         Vector3 moveDirection = Vector3.zero;
  22.  
  23.         //Get inputs for left and right
  24.         if (Input.GetKey(KeyCode.D))
  25.         {
  26.             moveDirection = Vector3.right;
  27.         }
  28.         else if (Input.GetKey(KeyCode.A))
  29.         {
  30.             moveDirection = Vector3.left;
  31.         }
  32.  
  33.         //Multiply moveDirection by moveSpeed and add gravity
  34.         Vector3 moveVector = (moveDirection * moveSpeed) + Vector3.down * gravity;
  35.        
  36.         //Ask the effector handler for displacement vectors caused by any Effectors
  37.         //If none displacement vector will be Vector3.zero and will change nothing
  38.         //There are better ways than to call GetEffectorDisplacement every frame but for now this will do,
  39.         //The cost is trivial either way
  40.         Vector3 displacementVector = effectorHandlerComponent.GetEffectorDisplacements();
  41.  
  42.         //Call move every frame, not just when input so we can apply gravity and displacement
  43.         characterController.Move((moveVector + displacementVector) * Time.deltaTime);
  44.     }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement