Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
public class CharacterBehavior : MonoBehaviour {
/// <summary>
/// Vitesse de déplacement du personnage
/// </summary>
public float speed = 2.0f;
// Mouvement du personnage
Vector3 movement;
// RigidBody
Rigidbody playerRigidBody;
Animator animator;
bool isAttacking = false;
// Appelé à l'initialisation de l'instance
void Start()
{
playerRigidBody = GetComponent<Rigidbody>();
animator = GetComponent<Animator>();
}
// Utilisé pour mettre à jour les positions, on a pas besoin de le faire à chaque frame comme on pourrait le faire avec le fonction Update()
void FixedUpdate()
{
// Récupération des commandes horizontales, A et D sur pc, gauche et droite sur une manette.
float h = CrossPlatformInputManager.GetAxisRaw("Horizontal");
// Récupération des commandes verticales, W et S sur pc, haut et bas sur une manette.
float v = CrossPlatformInputManager.GetAxisRaw("Vertical");
// On applique le mouvement à un vecteur 3
movement.Set(h, 0f, v);
// On corrige notre vecteur par rapport au temps
movement = movement.normalized * Time.fixedDeltaTime * speed;
// On met à jour la position de notre RigidBody via notre mouvement
playerRigidBody.MovePosition(transform.position + movement);
// On met à jour les variables de notre animator
// Dans notre cas "run" est un bool
animator.SetBool("run", v != 0 || h != 0);
// Mais on aurait pu utiliser un INT, un FLOAT, ou un TRIGGER
//animator.SetInteger("int", value); // A appliquer pour des valeurs simples ou des états
//animator.SetFloat("float", value); // A appliquer par exemple pour envoyer la vitesse, et différencier la marche de la course
//animator.SetTrigger("trigger"); // Utilisé plutôt pour des actions à lancer qu'une fois, par exemple une attaque
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.