Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / effects / Blood.cs
using Godot;

/// <summary>
/// 血液溅射效果, 暂未用到
/// </summary>
public partial class Blood : CpuParticles2D
{
    private float _timer;
    
    public override void _Ready()
    {
        Emitting = true;
        ReadyStop();
    }

    public override void _Process(double delta)
    {
        _timer += (float)delta;
        if (_timer > 15f)
        {
            if (_timer > 60f)
            {
                QueueFree();
            }
            else
            {
                var color = Modulate;
                color.A = Mathf.Lerp(1, 0, (_timer - 15f) / 45f);
                Modulate = color;
            }
        }
    }

    private async void ReadyStop()
    {
        var timer = GetTree().CreateTimer(Lifetime - 0.05f);
        await ToSignal(timer, "timeout");
        Emitting = false;
        SetPhysicsProcess(false);
        SetProcessInput(false);
        SetProcessInternal(false);
        SetProcessUnhandledInput(false);
        SetProcessUnhandledKeyInput(false);
    }
}