Contenu du cours
Jeu de Combat dans Unity
Jeu de Combat dans Unity
Attaques du Joueur
Gizmos
private void OnDrawGizmos()
{
Gizmos.DrawLine(transform.position, ((Vector2)transform.position + 4f * Vector2.right * localScale.x));
}
private void OnDrawGizmos()
: Déclaration de la méthode pour le callback OnDrawGizmos, indiquant que Unity appellera automatiquement cette méthode lors de l'affichage des Gizmos dans la vue Scène à des fins de visualisation ;Gizmos.DrawLine(...)
: Ce code trace une ligne à l'aide des Gizmos. Il prend deux points en argument pour définir la ligne ;transform.position
: Représente la position actuelle du GameObject auquel ce script est attaché ;((Vector2)transform.position + 4f * Vector2.right * localScale.x)
: Calcule le second point de la ligne. Il prend la position actuelle du GameObject (transform.position
) et y ajoute un vecteur qui s'étend de 4 unités vers la droite (4f * Vector2.right
).localScale.x
est utilisé pour ajuster la longueur et la direction de la ligne en fonction de l'échelle du GameObject sur l'axe x.
Globalement, ce code trace une ligne dans la vue Scène depuis la position actuelle du GameObject
jusqu'à un point situé à 4 unités vers la droite, avec une longueur et une direction ajustées selon l'échelle du GameObject
sur l'axe x. Nous l'utiliserons pour visualiser chaque portée d'attaque du joueur.
Script d'Attaque
bool isAttacking;
float range;
[SerializeField] LayerMask enemyLayer;
private void Start()
{
isAttacking = false;
range = 0f;
}
public void StartAttacking(float attackRange)
{
isAttacking = true;
range = attackRange;
}
public void EndAttacking()
{
isAttacking = false;
range = 0f;
}
private void Update()
{
if (isAttacking)
{
RaycastHit2D rayCastHit = Physics2D.Raycast(transform.position, Vector2.right * transform.localScale.x, range, enemyLayer);
if (rayCastHit)
{
Debug.Log(rayCastHit.transform.name);
isAttacking = false;
}
}
}
Lors de l'initialisation de l'attaque, appel de la fonction StartAttacking
, prenant la portée de l'attaque comme paramètre. Chaque attaque ayant une portée différente, l'attaque commence et la portée est définie en conséquence.
Dans la fonction Update
, lorsque le joueur attaque, création d'un RayCast à partir du joueur, se déplaçant dans la direction vers laquelle le joueur fait face, avec une distance égale à la portée de l'attaque, en filtrant uniquement le enemyLayer
.
Si nous touchons un ennemi, nous afficherons temporairement son nom dans la console, mais à l'avenir, nous récupérerons sa santé et l'attaquerons.
De plus, nous disposons d'une fonction EndAttacking
, qui mettra fin à notre attaque.
Événements d’animation
Ajout d’événements
Dans la fenêtre Animation de Unity, il est possible d’ajouter des événements aux clips d’animation à des images spécifiques. Cliquez avec le bouton droit sur la courbe d’animation ou l’image clé pour ajouter un événement d’animation et spécifier la fonction ainsi que les paramètres optionnels.
Définition des fonctions
Les fonctions appelées par les événements d’animation doivent être publiques. Le système d’événements d’animation de Unity prend en charge des paramètres optionnels de type float et string, invoquant automatiquement les fonctions spécifiées pendant la lecture de l’animation afin de synchroniser les animations avec la logique de jeu et de déclencher diverses actions.
Merci pour vos commentaires !