using System.Collections.Generic; using UnityEngine; using UnityEngine.Pool; public class EnemyManager : MonoBehaviour { [SerializeField] private MySpawnManager spawnManager; [SerializeField] public Transform followTarget; [SerializeField, Range(0f, 100f)] public float moveSpeed; [SerializeField, Range(0f, 720f)] public float turnSpeed = 360f; private List<Transform> activeEnemies = new List<Transform>(); private void FixedUpdate() { for (int i = 0; i < activeEnemies.Count; i++) { UpdateEnemyPosition(activeEnemies[i]); } } void UpdateEnemyPosition(Transform enemyTransform) { if (followTarget != null) { Vector3 targetPosition = followTarget.position; targetPosition.y = enemyTransform.position.y; Vector3 nextPosition = Vector3.MoveTowards(enemyTransform.position, targetPosition, moveSpeed * Time.fixedDeltaTime); if (enemyTransform.TryGetComponent<Rigidbody>(out Rigidbody rb)) { rb.MovePosition(nextPosition); } else { enemyTransform.position = nextPosition; } } } public void RegisterEnemy(GameObject enemy) { if (!activeEnemies.Contains(enemy.transform)) { activeEnemies.Add(enemy.transform); } } public void UnregisterEnemy(GameObject enemy) { activeEnemies.Remove(enemy.transform); } }