using UnityEngine; public class Enemy : MonoBehaviour { public int health; public int damageToPlayer; public int moneyOnDeath; public float moveSpeed; //Path private Transform[] path; private int curPathWaypoint; private Animator anim; void Start() { path = GameManager.instance.enemyPath.waypoints; // Get the Animator component anim = GetComponentInChildren(); anim.SetInteger("WeaponType_int", 0); // Default as no weapon for movement, to change when attacking anim.SetBool("Static_b", false); } void Update() { MoveAlongPath(); } void MoveAlongPath() { if(curPathWaypoint < path.Length) { transform.position = Vector3.MoveTowards(transform.position, path[curPathWaypoint].position, moveSpeed * Time.deltaTime); transform.LookAt(path[curPathWaypoint].position); anim.SetFloat("Speed_f", moveSpeed); anim.SetFloat("Body_Horizontal_f", 0.3f); anim.SetFloat("Body_Vertical_f", 0.6f); if(transform.position == path[curPathWaypoint].position) { curPathWaypoint++; } } else { SetIdleState(); GameManager.instance.TakeDamage(damageToPlayer); GameManager.instance.onEnemyDestroyed.Invoke(); Destroy(gameObject); } } void SetIdleState() { anim.SetFloat("Speed_f", 0.0f); // Idle body offsets for pistol (no attack) anim.SetFloat("Body_Horizontal_f", 0f); anim.SetFloat("Body_Vertical_f", 0.6f); // Idle = 0, 0 for Pistol // Optional: set a default idle pose if you want a specific idle animation anim.SetInteger("Animation_int", 2); // 0 = normal idle } public void TakeDamage(int damage) { health -= damage; if(health <= 0) { GameManager.instance.AddMoney(moneyOnDeath); GameManager.instance.onEnemyDestroyed.Invoke(); StopMovement(); anim.SetInteger("DeathType_int", 1); anim.SetTrigger("Death_b"); Destroy(gameObject, 2f); // Delay to allow death animation to play } } void StopMovement() { moveSpeed = 0; anim.SetFloat("Speed_f", 0f); curPathWaypoint = path.Length; // Prevent further movement } }