Données des ennemis
Leçon 2 sur 25 du cours Jeu Unity : défense de tours de Coddy.
Un Runner rejoint le Grunt. Il est plus rapide et a moins de points de vie, et tous les Runner partagent ces valeurs : elles appartiennent donc au type, et non à un ennemi en particulier. Elles sont stockées dans l’asset EnemyData, un ScriptableObject : le projet contient GruntData (vitesse 2, santé 9) et RunnerData (vitesse 3.5, santé 5), et l’Inspector attribue à chaque ennemi son propre asset dans un champ data.
Chaque ennemi lit les valeurs de son type via ce champ, chaque fois qu’il en a besoin :
void Start()
{
Debug.Log(name + " pays " + data.reward);
}La santé est différente : un Grunt qui a subi un coup a moins de santé que le Grunt derrière lui. L’asset contient donc maxHealth, et chaque ennemi le copie dans son propre champ dans Awake, qui s’exécute dès que l’objet est créé. Ne modifie jamais l’asset lui-même : tous les ennemis de ce type seraient affectés.
Défi
FacileAttribue à chaque ennemi les statistiques de son type à partir de son asset.
- Dans
Enemy, remplacespeedparpublic EnemyData data;et déplace-toi à la vitessedata.speed. - Ajoute
private int health;et définis sa valeur surdata.maxHealthdansAwake.
Appuie sur « Jouer » : le Runner dépasse le Grunt. Puis appuie sur « Vérifier ».
Essayez vous-même
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed = 2f;
public Transform[] waypoints;
private int next = 1;
void Update()
{
if (next >= waypoints.Length)
{
return;
}
Vector3 target = waypoints[next].position;
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
if (transform.position == target)
{
next++;
}
}
}
Toutes les leçons de Jeu Unity : défense de tours
1Le parcours
Points de passageDonnées des ennemisEntraînez-vous par vous-même : Playground Unity