Files
UnicornElimination/Assets/Scripts/Unicorn/LivingEntity.cs

46 lines
1.2 KiB
C#
Raw Normal View History

using Unicorn.Hitbox;
using UnityEngine;
namespace Unicorn
{
public partial class LivingEntity : MonoBehaviour
{
public float health = 20.0f;
private Rigidbody2D Rb { get; set; }
private bool _invulnerable = false;
private void Start()
{
Rb = TryGetComponent(out Rigidbody2D rb) ? rb : null;
}
private void OnTriggerEnter2D(Collider2D other)
{
if (Rb == null) return;
var transformPosition = other.transform.position - transform.position;
Rb.linearVelocity = Vector2.zero;
Rb.AddForce(transformPosition.normalized * health, ForceMode2D.Impulse);
}
public void Damage(DamageInfo info)
{
if (_invulnerable) return;
health -= info.Damage;
OnDamaged(info);
if (health <= 0.0f) OnDeath();
}
protected virtual void OnDeath() { }
protected virtual void OnDamaged(DamageInfo info) { }
protected virtual void OnKnockback(DamageInfo info)
{
var dir = transform.position - info.HitPoint;
Rb.AddForce(dir.normalized * info.KnockbackForce, ForceMode2D.Impulse);
}
}
}