59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
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<Transform> partolPoints;
|
|
private bool _onPatrol;
|
|
private bool _onPatrolMoveDamnit;
|
|
private int _currentPartolPoint;
|
|
|
|
private Transform _currentTarget;
|
|
private TweenerCore<Vector3, Vector3, VectorOptions> _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;
|
|
}
|
|
}
|
|
} |