Menu
CoddyTech

Tirer

Leçon 9 sur 25 du cours Jeu Unity : défense de tours de Coddy.

Une tour tire un Projectile sur sa cible. Le projectile se dirige vers elle avec MoveTowards, en suivant la cible lorsqu’elle se déplace, et lui inflige des dégâts à son arrivée. Il n’a pas besoin de savoir qu’il a touché un Enemy : il demande IDamageable, l’interface pour tout ce qui peut subir des dégâts, afin de pouvoir tirer sur tout ce qui l’implémente.

Une cible peut mourir alors qu’un projectile est en plein vol. Un objet Unity détruit est considéré comme égal à null, alors le projectile vérifie d’abord target == null et se détruit.

Pour l’instant, une tour tire une fois par seconde. Elle garde en mémoire le moment de son prochain tir :

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

Défi

Moyen

Les tours tirent des flèches une fois par seconde.

  1. Enemy implémente IDamageable : TakeDamage(int amount) soustrait cette valeur à health et détruit l’ennemi lorsque sa valeur est inférieure ou égale à 0.
  2. Projectile : Launch(Transform target, int damage) conserve ces deux valeurs ; Update vole vers la cible à la vitesse speed, appelle TakeDamage(damage) à l’arrivée et se détruit, ainsi que lorsque la cible a disparu.
  3. Tower : ajoute public int damage = 2; et [SerializeField] private Projectile projectilePrefab; ; tire comme ci-dessus depuis transform.position + Vector3.up.

Appuie sur « Jouer » : les flèches volent et les Grunts tombent. Puis clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;

// À venir : un projectile qui vole d'une tour vers sa cible.
public class Projectile : MonoBehaviour
{
}

Toutes les leçons de Jeu Unity : défense de tours

Entraînez-vous par vous-même : Playground Unity