60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using Koptilnya.StateMachine;
|
|
using UnityEngine;
|
|
|
|
namespace Characters.Enemy.States
|
|
{
|
|
public class ChaseState : State<EnemyState>
|
|
{
|
|
private readonly Enemy _enemy;
|
|
|
|
public ChaseState(Enemy enemy) : base(EnemyState.Chase)
|
|
{
|
|
_enemy = enemy;
|
|
}
|
|
|
|
public override void Enter()
|
|
{
|
|
if (!_enemy.isServer) return;
|
|
|
|
_enemy.SetAimRigWeight(1f);
|
|
}
|
|
|
|
public override void Update()
|
|
{
|
|
if (!_enemy.isServer) return;
|
|
|
|
_enemy.agent.destination = _enemy.target.position;
|
|
|
|
float distance = Vector3.Distance(_enemy.target.transform.position, _enemy.transform.position);
|
|
|
|
if (distance < _enemy.aggressionDistance)
|
|
{
|
|
_enemy.aimTransform.position = _enemy.target.position + _enemy.target.up * 1.2f;
|
|
|
|
// if (distance < 1f)
|
|
// {
|
|
// if (canAttack && !isKilling)
|
|
// {
|
|
// RpcKillPlayer(_target);
|
|
// animator.SetTrigger("attack");
|
|
//
|
|
// StartCoroutine(AfterKillTimer());
|
|
// }
|
|
// }
|
|
}
|
|
else
|
|
{
|
|
_enemy.state = EnemyState.Idle;
|
|
}
|
|
}
|
|
|
|
public override void Exit()
|
|
{
|
|
if (!_enemy.isServer) return;
|
|
|
|
_enemy.target = null;
|
|
|
|
_enemy.SetAimRigWeight(0f);
|
|
}
|
|
}
|
|
} |