using System.Collections.Generic; using PrimeTween; using UnityEngine; namespace Code.Example.Platformer.Entity.Enemies { public class Bee : Entity { [SerializeField] private List partolPoints; [SerializeField] private bool onPatrol = true; private int _currentPatrolPoint; private Vector3 _velocity = new Vector3(1,1,1); [SerializeField] private Transform _currentTarget; private Tween _patrolAction; protected override void Move() { if (onPatrol && !_patrolAction.isAlive) { _patrolAction = Tween .PositionAtSpeed(transform,partolPoints[_currentPatrolPoint].position, 0.5f) .OnComplete(target: this, target => target.OnControlPointReached()); } else if(_currentTarget) { var direction = _currentTarget.position - transform.position; direction.Normalize(); var targetPosition = _currentTarget.position + direction * -2f; UnityEngine.Debug.DrawLine(transform.position, targetPosition, Color.red); transform.position = Vector3.SmoothDamp(transform.position,_currentTarget.position,ref _velocity, 1f); // Tween // .PositionAtSpeed(transform, _currentTarget.position, 1f).OnUpdate(transform, ); // // .OnComplete(OnControlPointReached); } } private void OnControlPointReached() { if (++_currentPatrolPoint >= partolPoints.Count) _currentPatrolPoint = 0; } public void GotTarget(Transform other) { onPatrol = false; _currentTarget = other; _patrolAction.Stop(); } public void LostTarget() { onPatrol = true; _currentTarget = null; } } }