We've got enemies and movement!!
This commit is contained in:
parent
42ee0bf65d
commit
3287e8ea43
26 changed files with 1409 additions and 161 deletions
50
Assets/_Project/Scripts/Gameplay/EnemyDefinition.cs
Normal file
50
Assets/_Project/Scripts/Gameplay/EnemyDefinition.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// Assets/_Project/Scripts/Gameplay/EnemyDefinition.cs
|
||||
using UnityEngine;
|
||||
|
||||
namespace TD.Gameplay
|
||||
{
|
||||
/// <summary>
|
||||
/// Data definition for a single enemy type. One asset per type; shared across all
|
||||
/// instances spawned in a match. Consumed by <see cref="WaveManager"/> at spawn time.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Follows the same ScriptableObject pattern as <c>TowerDefinition</c>: data lives
|
||||
/// in project assets, only the asset reference (or its fields) crosses runtime code.
|
||||
/// Replace <see cref="EnemyPrefab"/> with a real mesh/animator when art is ready —
|
||||
/// no code changes required.
|
||||
/// </remarks>
|
||||
[CreateAssetMenu(fileName = "EnemyDefinition", menuName = "TD/Enemy Definition", order = 3)]
|
||||
public class EnemyDefinition : ScriptableObject
|
||||
{
|
||||
[Header("Identity")]
|
||||
[Tooltip("Human-readable name shown in debug logs and future enemy-info UI.")]
|
||||
public string DisplayName;
|
||||
|
||||
[Header("Stats")]
|
||||
[Tooltip("Maximum hit points for this enemy type.")]
|
||||
public float MaxHp = 100f;
|
||||
|
||||
[Tooltip("Movement speed in world units per second along the A* path.")]
|
||||
public float MoveSpeed = 3f;
|
||||
|
||||
[Tooltip("When true this enemy flies over tower footprints. " +
|
||||
"Towers with GroundedOnly=true will not target it. " +
|
||||
"Flying enemies follow the same A* path but are not physically " +
|
||||
"blocked by tower colliders (handled in EnemyMovement).")]
|
||||
public bool IsFlying;
|
||||
|
||||
[Header("Rewards / Costs")]
|
||||
[Tooltip("Gold awarded to the player whose tower lands the killing blow.")]
|
||||
public int GoldReward = 10;
|
||||
|
||||
[Tooltip("Number of lives deducted from the shared pool when this enemy " +
|
||||
"reaches the Goal. Boss enemies might cost 2 or more lives.")]
|
||||
public int LivesCost = 1;
|
||||
|
||||
[Header("Visuals")]
|
||||
[Tooltip("Prefab spawned in the world for this enemy. Must have NetworkObject, " +
|
||||
"NetworkTransform, EnemyHealth, EnemyStatus, and EnemyMovement at its root. " +
|
||||
"Place it on the Enemy physics layer.")]
|
||||
public GameObject EnemyPrefab;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue