using UnityEngine; public class EnemyController : MonoBehaviour { [SerializeField] private float searchRadius = 30f; [SerializeField] private float moveSpeed = 3f; [SerializeField] private float stopDistance = 1.2f; [SerializeField] private float rotateSpeed = 10f; private AttackTarget target; private void Update() { if (target == null) { target = FindNearestTarget(); } if (target == null) { return; } var toTarget = target.transform.position - transform.position; toTarget.y = 0f; if (toTarget.magnitude <= stopDistance) { return; } var direction = toTarget.normalized; transform.position += direction * moveSpeed * Time.deltaTime; var targetRotation = Quaternion.LookRotation(direction); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime); } private AttackTarget FindNearestTarget() { var targets = FindObjectsByType(); AttackTarget nearest = null; var nearestDistance = searchRadius; foreach (var attackTarget in targets) { var distance = Vector3.Distance(transform.position, attackTarget.transform.position); if (distance >= nearestDistance) { continue; } nearest = attackTarget; nearestDistance = distance; } return nearest; } }