Menu
CoddyTech

Niveaux des tours

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

Les tours seront améliorées : chaque niveau augmente les dégâts et la portée, et chaque amélioration coûte plus cher que la précédente. Les niveaux suivent une règle ; l’asset contient donc la règle plutôt qu’une liste de nombres, et les méthodes de la ScriptableObject effectuent le calcul, afin que chaque script qui le demande obtienne la même réponse. La récolte d’un jeu de ferme :

public int YieldAt(int level)
{
    return baseYield + yieldPerLevel * (level - 1);
}

Le niveau 1 correspond à la valeur de base. La tour ne conserve que son propre level et tire avec les nombres correspondant à ce niveau.

challenge icon

Défi

Moyen

Ajoutez des niveaux aux tours.

  1. Dans TowerData, ajoutez les entiers publics maxLevel, upgradeCost et damagePerLevel, ainsi que le flottant public rangePerLevel.
  2. Ajoutez DamageAt(int level) : damage + damagePerLevel * (level - 1) ; RangeAt de la même manière ; UpgradeCost(int level) : upgradeCost * level.
  3. Dans Tower, ajoutez private int level = 1;, public int Level => level; et public void Upgrade() { level++; } ; tirez en utilisant DamageAt(level) dans la portée définie par RangeAt(level).

Appuyez sur « Jouer » : les tours combattent comme avant. Puis appuyez sur « Vérifier ».

Essayez vous-même

using UnityEngine;

[CreateAssetMenu(fileName = "NewTower", menuName = "Tower Defense/Tower Data")]
public class TowerData : ScriptableObject
{
    public string towerName;
    public int cost = 50;
    public int damage = 2;
    public float range = 4f;
    public float fireRate = 1f;
}

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

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