using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class AgenteAlbañil : MonoBehaviour { public float speed = 3f; public GameObject blockPrefab; public Vector3 depotPosition = new Vector3(0, 0, 0); // Lugar donde se recogen los bloques public AgenteSupervisor manager; private NavMeshAgent agent; private enum AgentState { Idle, GoingToDepot, CarryingToBuild } private AgentState state = AgentState.Idle; private Vector3? buildPosition = null; private bool hasBlock = false; void Start() { agent = GetComponent(); } void Update() { switch (state) { case AgentState.Idle: buildPosition = manager.AssignNextBlockPosition(); if (buildPosition != null) { state = AgentState.GoingToDepot; } break; case AgentState.GoingToDepot: MoveToTarget(depotPosition); if (Vector3.Distance(transform.position, depotPosition) < 0.5f) { hasBlock = true; state = AgentState.CarryingToBuild; } break; case AgentState.CarryingToBuild: if (buildPosition != null) { MoveToTarget((Vector3)buildPosition); if (Vector3.Distance(transform.position, (Vector3)buildPosition) < 0.5f) { Instantiate(blockPrefab, (Vector3)buildPosition, Quaternion.identity); hasBlock = false; state = AgentState.Idle; buildPosition = null; } } break; } } void MoveToTarget(Vector3 target) { Vector3 dir = (target - transform.position).normalized; transform.position += dir * speed * Time.deltaTime; } }