52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Darkmatter.Core;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using VContainer;
|
|
|
|
namespace Darkmatter.Domain
|
|
{
|
|
public class EnemyStateMachine:StateMachine
|
|
{
|
|
public readonly IEnemyPawn enemyPawn;
|
|
public readonly IEnemyAnimController enemyAnimController;
|
|
public readonly EnemyConfigSO enemyConfig;
|
|
|
|
public EnemyStateMachine(IEnemyPawn pawn, IEnemyAnimController animController,EnemyConfigSO enemyConfig)
|
|
{
|
|
enemyPawn = pawn;
|
|
enemyAnimController = animController;
|
|
this.enemyConfig = enemyConfig;
|
|
}
|
|
|
|
public void SetSpeed(float speed)
|
|
{
|
|
enemyPawn.EnemyAI.speed = speed;
|
|
}
|
|
|
|
public bool PlayerInChasingRange()
|
|
{
|
|
if(Vector3.Distance(enemyPawn.PlayerTarget.position,enemyPawn.ReturnMyPos()) < enemyConfig.visionRange)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public bool PlayerInAttackRange()
|
|
{
|
|
if(Vector3.Distance(enemyPawn.PlayerTarget.position,enemyPawn.ReturnMyPos())<enemyConfig.attackRange)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void Die()
|
|
{
|
|
enemyAnimController.PlayDeadAnim();
|
|
enemyPawn.Die();
|
|
|
|
}
|
|
}
|
|
}
|