Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / activity / hurt / HurtArea.cs
@小李xl 小李xl on 4 Apr 2024 755 bytes 解决换阵营子弹碰撞问题
using Godot;

/// <summary>
/// 可被子弹击中的区域
/// </summary>
[Tool]
public partial class HurtArea : Area2D, IHurt
{
    /// <summary>
    /// 所属角色
    /// </summary>
    public Role Master { get; private set; }

    public void InitRole(Role role)
    {
        Master = role;
    }

    public override void _Ready()
    {
        Monitoring = false;
    }

    public bool CanHurt(CampEnum targetCamp)
    {
        //无敌状态
        if (Master.Invincible)
        {
            return true;
        }
        
        return Master.IsEnemy(targetCamp);
    }

    public void Hurt(ActivityObject target, int damage, float angle)
    {
        Master.CallDeferred(nameof(Master.HurtHandler), target, damage, angle);
    }
}