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);
	}
}