Files
Infratest/Assets/Code/Example/Platformer/Entity/Enemies/Bee.cs
T
2026-02-26 11:57:51 +03:00

62 lines
2.0 KiB
C#

using System.Collections.Generic;
using PrimeTween;
using UnityEngine;
namespace Code.Example.Platformer.Entity.Enemies
{
public class Bee : Entity
{
[SerializeField] private List<Transform> 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;
}
}
}