Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Attaques du Joueur | Comportement du Joueur
Jeu de Combat dans Unity
course content

Contenu du cours

Jeu de Combat dans Unity

Jeu de Combat dans Unity

1. Système d'Animation Unity
2. Comportement du Joueur
3. Comportement de l'Ennemi
4. Améliorer le Jeu
5. Améliorer le Jeu Flappy Bird

book
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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

course content

Contenu du cours

Jeu de Combat dans Unity

Jeu de Combat dans Unity

1. Système d'Animation Unity
2. Comportement du Joueur
3. Comportement de l'Ennemi
4. Améliorer le Jeu
5. Améliorer le Jeu Flappy Bird

book
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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 3
some-alt