Newer
Older
DungeonShooting / DungeonShooting_Godot / src / weapon / shell / ThrowShell.cs
using Godot;

/// <summary>
/// 弹壳
/// </summary>
public class ThrowShell : ThrowNode
{

    public override void _Ready()
    {
        base._Ready();
        ZIndex = 2;
    }

    protected override void OnOver()
    {
        //如果落地高度不够低, 再抛一次
        if (StartYSpeed > 1)
        {
            StartThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null);
        }
        else
        {
            base.OnOver();
            //等待被销毁
            AwaitDestroy();
        }
    }

    private async void AwaitDestroy()
    {
        CollisionShape.Disabled = true;
        //60秒后销毁
        await ToSignal(GetTree().CreateTimer(60), "timeout");
        QueueFree();
    }

    protected override void OnMaxHeight(float height)
    {
        ZIndex = 0;
    }
}