PlayerController.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using UnityEngine;
  2. using System;
  3. namespace VoxelImporter
  4. {
  5. public class PlayerController : MonoBehaviour
  6. {
  7. public Transform transformCache { get; protected set; }
  8. public CharacterController characterControllerCache { get; protected set; }
  9. public Animator animatorCache { get; protected set; }
  10. public float moveSpeed = 24f;
  11. public float rotateSpeed = 90f;
  12. protected int isWalkingID;
  13. public Vector3 velocity { get; protected set; }
  14. protected Vector3 addVelocity;
  15. protected GameObject weaponColliderClone;
  16. void Awake()
  17. {
  18. transformCache = transform;
  19. characterControllerCache = GetComponent<CharacterController>();
  20. animatorCache = GetComponent<Animator>();
  21. isWalkingID = Animator.StringToHash("IsWalking");
  22. }
  23. void FixedUpdate()
  24. {
  25. Vector3 forward = Vector3.zero;
  26. forward += Vector3.forward * Input.GetAxis("Vertical");
  27. forward += Vector3.right * Input.GetAxis("Horizontal");
  28. var movement = new Vector3(0, velocity.y, 0) + addVelocity;
  29. addVelocity = Vector3.zero;
  30. movement += forward * moveSpeed;
  31. characterControllerCache.Move(movement * Time.fixedDeltaTime);
  32. velocity = movement;
  33. if (forward.normalized.sqrMagnitude > 0f)
  34. transformCache.rotation = Quaternion.Lerp(transformCache.rotation, Quaternion.LookRotation(forward.normalized), 0.3f);
  35. animatorCache.SetBool(isWalkingID, (forward.sqrMagnitude > 0.01f));
  36. }
  37. }
  38. }