diff --git a/Assets/Scripts/Player/ThirdPersonCharacterController.meta b/Assets/Scripts/Player/ThirdPersonCharacterController.meta deleted file mode 100644 index 1f7eabcdf6f6459ac05c78dfb90cdb59dd3260a7..0000000000000000000000000000000000000000 --- a/Assets/Scripts/Player/ThirdPersonCharacterController.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 66d090248a0748e4c813eb773890fe97 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs b/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs deleted file mode 100644 index 181567407bcbb776f9da2308514d907f4b6a16dd..0000000000000000000000000000000000000000 --- a/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class CharacterAnimation : MonoBehaviour -{ - - [Header("Character")] - public GameObject puppetMasterHeadBone; - private GameObject camera; - - protected virtual void Start() { - if (transform.parent.GetComponent<PlayerMovement>() == null) { - Debug.LogWarning("L'animation controller doit être l'enfant du character controllers!", transform); - } - - camera = GameObject.Find("Player Camera"); - } - - protected virtual void FixedUpdate() { - TurnHead(); - } - - void OnAnimatorMove(){ - GetComponentInParent<PlayerMovement>().OnAnimatorMove(); - } - - private void TurnHead(){ - var rotY = camera.transform.eulerAngles.y - transform.parent.transform.eulerAngles.y; - //rotY = (rotY > 180) ? rotY - 360 : rotY; - if(rotY > 180){ - rotY = rotY- 360; - } - - if(rotY < -30f) rotY = -30f; - else if(rotY > 30f) rotY = 30f; - - //Debug.Log("Rotation de la tête: "+rotY); - - var headRotation = new Quaternion(); - headRotation = Quaternion.Euler(puppetMasterHeadBone.transform.eulerAngles.x, transform.parent.transform.eulerAngles.y + rotY + -90f, puppetMasterHeadBone.transform.eulerAngles.z); - - puppetMasterHeadBone.transform.rotation = headRotation; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs.meta b/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs.meta deleted file mode 100644 index c19526db4534600e8da3fbd4c614ca5f452a9fb5..0000000000000000000000000000000000000000 --- a/Assets/Scripts/Player/ThirdPersonCharacterController/CharacterAnimation.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 89167292edefc9944b1ca58c10c6f185 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs b/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs deleted file mode 100644 index 730dcaf75c18053ed963a87d422e0b67d7b28da7..0000000000000000000000000000000000000000 --- a/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs +++ /dev/null @@ -1,303 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.InputSystem; - -public class PlayerMovement : MonoBehaviour -{ - // Variables - [Header("Movement")] - [SerializeField] private float moveSpeed; - [SerializeField] private float walkSpeed; - [SerializeField] private float runSpeed; - - private Vector3 moveDirection; - private float computedForwardFloat; - private bool isStoppingForTurn; - private Vector3 velocity; - private Quaternion rotation; - private Rigidbody rb; - - [SerializeField] private bool isGrounded; - [SerializeField] private float groundCheckDistance = 0.05f; - [SerializeField] private LayerMask groundMask; - [SerializeField] private float gravity = -9.81f; - - [SerializeField] private float jumpHeight; - - - [Header("Character")] - [SerializeField] private float animationTransitionSpeed = 10f; - [SerializeField] private float animationSpeed = 1f; - [SerializeField] private float turnSpeed = 5f; - - // Contrôles - private PlayerInput playerInput; - private InputAction MoveAction; - private InputAction RunAction; - private InputAction JumpAction; - private Vector2 MovementAxis; - private bool runningBtn; - private float playerControllForce; - - // Références - private CharacterController controller; - private Animator animator; - private GameObject camera; - - // Debug - //[SerializeField] private GameObject debugArrow; - - //Awake is called when the script instance is being loaded. - void Awake() - { - playerInput = GetComponentInParent<PlayerInput>(); - MoveAction = playerInput.currentActionMap.FindAction("Move"); - MoveAction.performed += ctx => MovementAxis = ctx.ReadValue<Vector2>(); - MoveAction.canceled += ctx => MovementAxis = Vector2.zero; - - RunAction = playerInput.currentActionMap.FindAction("Run"); - RunAction.started += ctx => runningBtn = true; - RunAction.canceled += ctx => runningBtn = false; - - JumpAction = playerInput.currentActionMap.FindAction("Jump"); - JumpAction.started += JumpAction_started; - } - - // Start is called before the first frame update - void Start() - { - for (int i = 0; i < Gamepad.all.Count; i++) - { - Debug.Log(Gamepad.all[i].name); - } - - //controller = GetComponent<CharacterController>(); - rb = GetComponent<Rigidbody>(); - animator = GetComponentInChildren<Animator>(); - camera = GameObject.Find("Player Camera"); - } - - // Update is called once per frame - void Update() - { - //Debug.Log("MovementAxis - MovementAxis: "+MovementAxis); - //Debug.Log("momvementRotation - Rotation (controller): "+Mathf.Atan2(MovementAxis.x, MovementAxis.y)* Mathf.Rad2Deg); - Move(); - playerControllForce = Mathf.Clamp(Mathf.Abs(MovementAxis.y)+Mathf.Abs(MovementAxis.x), 0, 1); - //rotation = Quaternion.Euler(0, camera.transform.eulerAngles.y, 0); - } - - void LateUpdate(){ - if(isGrounded){ - animator.SetTrigger("grounded"); - animator.ResetTrigger("falling"); - }else{ - animator.SetTrigger("falling"); - animator.ResetTrigger("grounded"); - } - } - - // Appelé à chaque mouvement de l'animator - public void OnAnimatorMove() - { - if (animator){ - transform.rotation = animator.rootRotation; - transform.position += animator.deltaPosition; - } - } - - void OnDrawGizmosSelected() - { - // Dessine une boule rouge pour visualier goundCheckDistance - Gizmos.color = Color.red; - Gizmos.DrawSphere(transform.position, groundCheckDistance); - } - - private void Move() - { - // Récupère les vecteurs de la caméra - var forward = camera.transform.forward; - var right = camera.transform.right; - - // On les normalises (0-1) - forward.y = 0f; - right.y = 0f; - forward.Normalize(); - right.Normalize(); - - // On créé la direction - moveDirection = forward * MovementAxis.y + right * MovementAxis.x; - - // Rotate player character - if(playerControllForce != 0){/* - var targetTransform = new Quaternion(); - targetTransform = Quaternion.Euler(transform.eulerAngles.x, camera.transform.eulerAngles.y + 90 * MovementAxis.x, transform.eulerAngles.z); - transform.rotation = Quaternion.Slerp(transform.rotation, targetTransform, Time.deltaTime * turnSpeed);*/ - } - - - // Check si on est sur le sol ou non (renvoie true/false) - isGrounded = Physics.CheckSphere(transform.position, groundCheckDistance, groundMask); - - if(isGrounded && velocity.y < 0){ - velocity.y = 0f; - } - - if(isGrounded){ - Turn(); - if(moveDirection != Vector3.zero){ - if(runningBtn){ - // Run - Run(); - }else{ - // Walk - Walk(); - } - } else { - // Idle - Idle(); - } - } - - // On applique la direction à suivre sur la flèche de test - //debugArrow.transform.rotation = Quaternion.Euler(moveDirection); - //-Debug.Log("directionCible - Direction cible: "+Quaternion.Euler(moveDirection)); // DebugLog sur l'UI - - //controller.Move(moveDirection * Time.deltaTime * moveSpeed); - velocity.y += gravity * Time.deltaTime; // Calcul de la gravité - //controller.Move(velocity * Time.deltaTime); // Application de la gravité - - //transform.rotation = rotation; // Rotation - - ////-Debug.Log("Touche le sol? "+isGrounded); - ////-Debug.Log("Vélocité; "+velocity); - //-Debug.Log("velocity - Vélocité: "+velocity); // DebugLog sur l'UI - ////-Debug.Log("Forward: " + animator.GetFloat("Forward")); - //-Debug.Log("animatorForwardFloat - Float Forward Animator: "+animator.GetFloat("Forward")); // DebugLog sur l'UI - ////-Debug.Log("Turn: " + animator.GetFloat("Turn")); - //-Debug.Log("animatorTurnFloat - Float Turn Animator: "+animator.GetFloat("Turn")); // DebugLog sur l'UI - //-Debug.Log("playerRotation - Rotation (joueur): "+transform.rotation.eulerAngles.y); - //-Debug.Log("player180Rotation - Rotation 180 (joueur): "+((transform.rotation.eulerAngles.y > 180) ? transform.rotation.eulerAngles.y - 360 : transform.rotation.eulerAngles.y)); - } - - private void Idle(){ - animator.speed = animationSpeed; - animator.SetFloat("Forward", Mathf.Lerp(animator.GetFloat("Forward"), 0, animationTransitionSpeed * Time.deltaTime)); - } - - private void Turn(){ - float turnByCameraAngle = 0; - - // Permet de faire basculer dans le négatif la rotation du joueur -> comme la direction du Joystick - float rotationDuJoueur = (transform.rotation.eulerAngles.y > 180) ? transform.rotation.eulerAngles.y - 360 : transform.rotation.eulerAngles.y; - float rotationCamera = (camera.transform.rotation.eulerAngles.y > 180) ? camera.transform.rotation.eulerAngles.y - 360 : camera.transform.rotation.eulerAngles.y; - float rotationControllerJoueur = Mathf.Atan2(MovementAxis.x, MovementAxis.y)* Mathf.Rad2Deg; - int signeDiffRotJoueurRotCam = (int)Mathf.Sign(rotationDuJoueur - rotationCamera); - - // Debug - Debug.Log("playerRotationMinusCameraRotation - rotationDuJoueur - rotationCamera: "+Mathf.RoundToInt(rotationDuJoueur - rotationCamera)); - Debug.Log("rotationControllerJoueurRoundInt - Mathf.RoundToInt(rotationControllerJoueur): "+Mathf.RoundToInt(rotationControllerJoueur)); - - // Vérification - // Si la rotation arrondie du joueur relative à la caméra est différente de la rotation arrondie du contrôlleur, et que ce dernier n'est pas égal à 0, - if(Mathf.RoundToInt(rotationDuJoueur - rotationCamera) != Mathf.RoundToInt(rotationControllerJoueur) && MovementAxis != Vector2.zero){ - - // Ici on va regarder si le contrôlleur pointe vers 180°, soit derrière le perso - // Ce qu'il se passe si on ne fait pas ça, c'est que le joueur va tourner dans le sens contraire s'il est vers la gauche, vu que 180 >0 - if(rotationControllerJoueur == 180f || rotationControllerJoueur == 0f){ - rotationControllerJoueur *= (int)signeDiffRotJoueurRotCam; - }else{ - if(signeDiffRotJoueurRotCam != Mathf.Sign(rotationControllerJoueur)){ - // Ici on va regarder s'il n'est pas plus court de continuer à tourner dans le négatif, vu que la rotation du contrôlleur, si elle est positive, demandera toujours au perso de tourner vers le positif - float versLeNegatif = Mathf.Abs(signeDiffRotJoueurRotCam * 180 - rotationDuJoueur) + Mathf.Abs(signeDiffRotJoueurRotCam * (-1) * 180 - rotationControllerJoueur); - float versLePositif = Mathf.Abs(rotationDuJoueur) + Mathf.Abs(rotationControllerJoueur); - if(versLeNegatif < versLePositif){ - rotationControllerJoueur = signeDiffRotJoueurRotCam*200; // On attribut une valeur inférieur à -180 pour forcer le perso à tourner dans le sens contraire - // Une fois dépassé les -180, la rotation du joueur passera en positif, et le calcul se fera normalement - // La valeur (200) est aribtraire - } - } - } - - // On initialise une variable qui nous servira pour le signe de la rotation (positif ou negatif) - int rotationSign = 1; - rotationSign = (int)Mathf.Sign((rotationCamera + rotationControllerJoueur)-rotationDuJoueur); - - // Ici, il faudrait faire un lerp - if(Mathf.RoundToInt(rotationDuJoueur - rotationCamera) > Mathf.RoundToInt(rotationControllerJoueur) -5 && Mathf.RoundToInt(rotationDuJoueur - rotationCamera) < Mathf.RoundToInt(rotationControllerJoueur) +5){ - turnByCameraAngle = (rotationSign * 0.1f); - }else{ - if (runningBtn) - { - turnByCameraAngle = (rotationSign * 1.0f); - } - else - { - turnByCameraAngle = (rotationSign * 0.5f); - } - } - } - - // Pour retourner le perso si on fait un 180° - if (isStoppingForTurn) - { - if (moveDirection != Vector3.zero) - { - if(Mathf.Abs((Mathf.RoundToInt(rotationDuJoueur - rotationCamera) - Mathf.RoundToInt(rotationControllerJoueur))) < 5){ - isStoppingForTurn = false; - } - } - else - { - isStoppingForTurn = false; - computedForwardFloat = 1; - } - } - else - { - if((Mathf.Abs(Mathf.RoundToInt(rotationDuJoueur - rotationControllerJoueur)) > 170 && - Mathf.Abs(Mathf.RoundToInt(rotationDuJoueur - rotationControllerJoueur)) < 190)){ - isStoppingForTurn = true; - computedForwardFloat = 0; - } - else - { - if(computedForwardFloat != 1.0f){ - computedForwardFloat = 1.0f; - } - } - } - - // Application - //Mathf.Atan2(MovementAxis.x, MovementAxis.y)* Mathf.Rad2Deg - animator.speed = Mathf.Clamp(Mathf.Abs(MovementAxis.y)+Mathf.Abs(MovementAxis.x), 0, 1) * animationSpeed; - //animator.SetFloat("Turn", Mathf.Lerp(animator.GetFloat("Turn"), Mathf.Clamp(MovementAxis.x + (float)turnByCameraAngle, -1, 1), animationTransitionSpeed * Time.deltaTime)); - animator.SetFloat("Turn", Mathf.Lerp(animator.GetFloat("Turn"), turnByCameraAngle, animationTransitionSpeed * Time.deltaTime)); - } - - private void Walk(){ - // Ici on limite la valeur à 1. Le calcul est basé sur la valeur du controleur en x et y. Cela permet de ne pas dépendre d'un seul axe - animator.speed = Mathf.Clamp(Mathf.Abs(MovementAxis.y)+Mathf.Abs(MovementAxis.x), 0, 1) * animationSpeed; - animator.SetFloat("Forward", Mathf.Lerp(animator.GetFloat("Forward"), 0.5f * computedForwardFloat, animationTransitionSpeed * Time.deltaTime)); - moveSpeed = walkSpeed; - } - - private void Run(){ - animator.speed = animationSpeed; - animator.SetFloat("Forward", Mathf.Lerp(animator.GetFloat("Forward"), 1 * computedForwardFloat, animationTransitionSpeed * Time.deltaTime)); - moveSpeed = runSpeed; - } - - private void Jump(){ - velocity.y = Mathf.Sqrt(jumpHeight * -3.0f * gravity); - } - - // Fonction des Contrôles - public void JumpAction_started(InputAction.CallbackContext context){ - if (isGrounded){ - Jump(); - } - } - -} diff --git a/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs.meta b/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs.meta deleted file mode 100644 index 27e78275a77a2cc7cf85edcbefa35806157a6c47..0000000000000000000000000000000000000000 --- a/Assets/Scripts/Player/ThirdPersonCharacterController/PlayerMovement.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b2db16020daec97499c8c4ad01a92d3a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: