using System.Collections; using UnityEngine; public class Player : MonoBehaviour { [Header("Setup")] [SerializeField] private InputManager _inputManager; [SerializeField] private GameObject _cameraGameObject; [SerializeField] private Animator _animator; [Header("Camera Options")] [SerializeField] private Vector3 camOffset; [SerializeField] private float cameraFollowSpeed = 2.5f; [Header("Player Options")] [Range(0f, 10f)] public float moveSpeed = 5f; [Range(0f, 100f)] public float animationSpeed = 30f; [Header("Enemy Snapping")] [SerializeField] private float minAimDistance; [SerializeField] private float maxAimDistance; [Header("Dash")] [Range(0f, 100f)] public float dashSpeed = 7f; [Range(0f, 1f)] public float dashTime = 0.2f; [Range(0f, 4f)] public float dashCooldownTime = 1f; [SerializeField] public TrailRenderer dashTrail; [Header("Attacking")] public LayerMask enemyLayer; private Camera _camera; private CharacterController _controller; private Animate _animate; private PlayerMove _playerMove; private PlayerRotate _playerRotate; private PlayerAttack _playerAttack; private CameraMove _cameraMove; // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { camOffset.z = camOffset.x; _camera = _cameraGameObject.GetComponent<Camera>(); _controller = GetComponent<CharacterController>(); _playerRotate = gameObject.AddComponent<PlayerRotate>(); _animate = gameObject.AddComponent<Animate>(); _animate.initialize(_animator); _playerAttack = gameObject.AddComponent<PlayerAttack>(); //_playerAttack.initialize(_inputManager, enemyLayer, _animate); _playerMove = gameObject.AddComponent<PlayerMove>(); _playerMove.initialize(_controller, dashTrail); _cameraMove = gameObject.AddComponent<CameraMove>(); _cameraMove.initialize(transform, camOffset, cameraFollowSpeed, _camera.transform); } void Update() { Vector3 moveInput = new Vector3(_inputManager.moveInput.x, 0f , _inputManager.moveInput.y); Vector3 aimTarget = _playerRotate.AimTarget(minAimDistance, maxAimDistance, _camera, _inputManager.aimInput); Vector3 moveDirection = _playerMove.GetMoveDirection(moveInput, _camera.transform); Vector3 lookTarget = _playerRotate.LookTarget(moveDirection); moveDirection += _playerMove.Gravity(); _playerMove.Dash(dashTime, dashCooldownTime, dashSpeed, _inputManager.sprintPerformed); _playerMove.ApplyMovement(moveDirection, lookTarget, moveSpeed); _cameraMove.MoveCamera(); _animate.AnimateState("Walk", moveInput.magnitude, animationSpeed); /* //360 Char Animation //Vector3 localMoveDirection = transform.InverseTransformDirection(moveDirection); //_animate.AnimateState("X", localMoveDirection.x, animationSpeed); //_animate.AnimateState("Y", localMoveDirection.z, animationSpeed); //_playerAttack.Attack(); */ } }