Files
project-reset/Assets/Scripts/Units/Enemy.cs

51 lines
1.5 KiB
C#

using System;
using Reset.Core;
using Sirenix.OdinInspector;
using UnityEngine;
namespace Reset.Units{
public class Enemy : Unit, ILockOnTarget, IKillable {
public float lockonTargetRadius{ get; set; } = 10f;
[ShowInInspector]
public bool lockonDebug{ get; set; } = true;
public float lockonRaycastVerticalOffset{ get; set; } = 1f;
public Animator testModelAnimator;
public override void UnitStart(){
base.UnitStart();
((IKillable)this).IKillableInitialize();
}
public void OnTargetDelete(){
GetComponent<ILockOnTarget>().SafelyDeleteTarget();
}
public void TakeDamage(DamageSource[] sources){
foreach (DamageSource source in sources) {
TakeDamage(source);
}
}
public void TakeDamage(DamageSource source){
try {
((IKillable)this).currentHealth -= source.damageDealt;
testModelAnimator.SetTrigger("Hit");
if (((IKillable)this).currentHealth <= 0) {
Kill();
}
} catch (Exception e) {
Debug.LogError($"Failed TakeDamage on {this.name}: {e.Message}");
}
}
public void Kill(){
throw new System.NotImplementedException();
}
public float maxHealth{ get; set; }
public float currentHealth{ get; set; }
}
}