2024-03-19 21:38:59 +03:00

55 lines
1.4 KiB
C#

using Koptilnya.StateMachine;
using Mirror;
using UnityEngine;
namespace Characters.Enemy.States
{
public class ChaseState : State<EnemyState>
{
private readonly Enemy _enemy;
public ChaseState(Enemy enemy) : base(EnemyState.Chase)
{
_enemy = enemy;
}
[ServerCallback]
public override void Enter()
{
_enemy.SetSpeedMul(1f);
_enemy.SetAimRigWeight(1f);
}
[ServerCallback]
public override void Update()
{
_enemy.agent.destination = _enemy.targetTransform.position;
var distanceToTarget = _enemy.DistanceToTarget;
if (distanceToTarget < _enemy.aggressionDistance)
{
_enemy.aimTransform.position = _enemy.targetTransform.position + _enemy.targetTransform.up * 1.2f;
if (distanceToTarget < 1f)
{
_enemy.ChangeState(EnemyState.Attack);
}
}
else
{
_enemy.ChangeState(EnemyState.Idle);
}
_enemy.targetTransform = _enemy.GetClosestTarget();
}
[ServerCallback]
public override void Exit()
{
_enemy.targetTransform = null;
_enemy.SetAimRigWeight(0f);
}
}
}