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;
}Défi
MoyenLes tours tirent des flèches une fois par seconde.
EnemyimplémenteIDamageable:TakeDamage(int amount)soustrait cette valeur àhealthet détruit l’ennemi lorsque sa valeur est inférieure ou égale à 0.Projectile:Launch(Transform target, int damage)conserve ces deux valeurs ;Updatevole vers la cible à la vitessespeed, appelleTakeDamage(damage)à l’arrivée et se détruit, ainsi que lorsque la cible a disparu.Tower: ajoutepublic int damage = 2;et[SerializeField] private Projectile projectilePrefab;; tire comme ci-dessus depuistransform.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