Zombie flash

This commit is contained in:
Фёдор Веселов 2024-09-25 15:47:51 +05:00
commit eb2159811e
4 changed files with 73 additions and 2 deletions

View file

@ -0,0 +1,34 @@
using Godot;
using System;
public partial class FlashComponent : CanvasGroup
{
[Export] private float _flashDuration = 0.1f;
private Tween _tween;
private ShaderMaterial _shaderMaterial;
public override void _Ready()
{
_shaderMaterial = Material as ShaderMaterial;
}
public void DamageFlash(int damage)
{
Flash();
}
public void Flash()
{
_tween?.Kill();
_tween = CreateTween();
Action<float> action = SetAmount;
_tween.TweenMethod(Callable.From(action),1.0f,0.0f,_flashDuration);
}
private void SetAmount(float amount)
{
_shaderMaterial.SetShaderParameter("amount",amount);
}
}

View file

@ -3,6 +3,9 @@ using System;
public partial class RuntimeZombieData : Node2D, IEntity
{
[Signal]
public delegate void OnHPChangedEventHandler(int deltaHP);
private int _hp;
[Export]
private int _maxHP;
@ -22,6 +25,7 @@ public partial class RuntimeZombieData : Node2D, IEntity
public void Heal(int amount)
{
_hp += amount;
EmitSignal(SignalName.OnHPChanged,amount);
if (MaxHp > 0)
{
@ -32,10 +36,12 @@ public partial class RuntimeZombieData : Node2D, IEntity
public void TakeDamage(int amount)
{
_hp -= amount;
EmitSignal(SignalName.OnHPChanged,-amount);
if (_hp <= 0)
{
QueueFree();
}
}
}