Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / activity / hurt / HurtArea.cs
@小李xl 小李xl on 4 Apr 2024 755 bytes 解决换阵营子弹碰撞问题
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 可被子弹击中的区域
  5. /// </summary>
  6. [Tool]
  7. public partial class HurtArea : Area2D, IHurt
  8. {
  9. /// <summary>
  10. /// 所属角色
  11. /// </summary>
  12. public Role Master { get; private set; }
  13.  
  14. public void InitRole(Role role)
  15. {
  16. Master = role;
  17. }
  18.  
  19. public override void _Ready()
  20. {
  21. Monitoring = false;
  22. }
  23.  
  24. public bool CanHurt(CampEnum targetCamp)
  25. {
  26. //无敌状态
  27. if (Master.Invincible)
  28. {
  29. return true;
  30. }
  31. return Master.IsEnemy(targetCamp);
  32. }
  33.  
  34. public void Hurt(ActivityObject target, int damage, float angle)
  35. {
  36. Master.CallDeferred(nameof(Master.HurtHandler), target, damage, angle);
  37. }
  38. }