using System; using System.Collections.Generic; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine; namespace Code.Example.Platformer.Entity.Enemies { public class Bee : Entity { [SerializeField] private List partolPoints; private bool _onPatrol; private bool _onPatrolMoveDamnit; private int _currentPartolPoint; private Transform _currentTarget; private TweenerCore _patrolAction; protected override void Move() { if (_onPatrol && !_onPatrolMoveDamnit) { _onPatrolMoveDamnit = true; _patrolAction = transform.DOMove(partolPoints[_currentPartolPoint].position, 3f); _patrolAction.onComplete += OnControlPointReached; } else { var direction = _currentTarget.position - transform.position; direction.Normalize(); var targetPosition = _currentTarget.position + direction * -2f; UnityEngine.Debug.DrawLine(transform.position, targetPosition, Color.red); transform.DOMove(_currentTarget.position, 2f).onComplete += OnControlPointReached; } } private void OnControlPointReached() { if (++_currentPartolPoint >= partolPoints.Count) _currentPartolPoint = 0; _onPatrolMoveDamnit = false; } public void GotTarget(Transform other) { _onPatrol = false; _currentTarget = other; _patrolAction?.Complete(); } public void LostTarget() { _onPatrol = true; _currentTarget = null; } } }