58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
using Code.Audio;
|
|
using Code.Configs;
|
|
using Reflex.Attributes;
|
|
using UnityEngine;
|
|
using UnityEngine.AI;
|
|
|
|
namespace Code.Gameplay.Enemies
|
|
{
|
|
public class Cockroach : BaseEnemy
|
|
{
|
|
[Inject]
|
|
private void Construct(CockroachConfig cockroachConfig)
|
|
{
|
|
Damage = cockroachConfig.damage;
|
|
AttackCooldown = cockroachConfig.attackCooldown;
|
|
|
|
DetectionRange = cockroachConfig.detectionRange;
|
|
AttackRange = cockroachConfig.attackRange;
|
|
|
|
Speed = cockroachConfig.speed;
|
|
|
|
IsStunnable = cockroachConfig.isStunnable;
|
|
StunDuration = cockroachConfig.stunDuration;
|
|
|
|
UsesIdleMovement = cockroachConfig.usesIdleMovement;
|
|
IdleWanderRadius = cockroachConfig.idleWanderRadius;
|
|
IdleMoveDurationMin = cockroachConfig.idleMoveDurationMin;
|
|
IdleMoveDurationMax = cockroachConfig.idleMoveDurationMax;
|
|
IdleMoveDurationMin = cockroachConfig.idleMoveDurationMin;
|
|
IdleMoveDurationMax = cockroachConfig.idleMoveDurationMax;
|
|
IdlePauseDurationMin = cockroachConfig.idlePauseDurationMin;
|
|
IdlePauseDurationMax = cockroachConfig.idlePauseDurationMax;
|
|
}
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
|
|
if (!agent) return;
|
|
|
|
var walkableArea = NavMesh.GetAreaFromName("Cockroach");
|
|
agent.areaMask = 1 << walkableArea;
|
|
}
|
|
|
|
protected override void HandleAttack()
|
|
{
|
|
if (!Player || !_canAttack) return;
|
|
|
|
var distance = Vector3.Distance(transform.position, Player.transform.position);
|
|
|
|
if (!(distance <= AttackRange)) return;
|
|
|
|
audioService.PlayEnemy(EnemiesSounds.RoachAttack, agent.transform.position);
|
|
|
|
DealDamage();
|
|
}
|
|
}
|
|
} |