Add KnockbackComponent and HazardComponent for enhanced enemy interactions; integrate knockback effects in DamageComponent

This commit is contained in:
2025-09-11 05:09:24 +02:00
parent 98b3202361
commit aa73e54b3e
10 changed files with 127 additions and 50 deletions

View File

@@ -0,0 +1,31 @@
using Godot;
namespace Mr.BrickAdventures.scripts.components;
[GlobalClass]
public partial class HazardComponent : Node2D
{
[Export] public KnockbackComponent KnockbackComponent { get; set; }
[Export] public Area2D HazardArea { get; set; }
public override void _Ready()
{
if (KnockbackComponent == null)
{
GD.PrintErr("HazardComponent requires a KnockbackComponent to function properly.");
SetProcess(false);
return;
}
HazardArea.BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
GD.Print($"Node {body.Name} entered hazard area.");
if (body is CharacterBody2D characterBody && Owner is Node2D source)
{
KnockbackComponent.ApplyKnockback(characterBody, source);
}
}
}