26 lines
785 B
C#
26 lines
785 B
C#
using Godot;
|
|
using Movementtests.interfaces;
|
|
|
|
namespace Movementtests.scenes.components.knockback;
|
|
|
|
[GlobalClass, Icon("res://assets/ui/IconGodotNode/node_3D/icon_wind.png")]
|
|
public partial class CKnockback : Node3D, IKnockbackable
|
|
{
|
|
[Export] public RKnockback RKnockback { get; set;} = null!;
|
|
|
|
private KnockbackRecord? _knockbackRecord;
|
|
|
|
public void RegisterKnockback(KnockbackRecord knockbackRecord)
|
|
{
|
|
_knockbackRecord = knockbackRecord;
|
|
}
|
|
|
|
public Vector3 ComputeKnockback()
|
|
{
|
|
if (_knockbackRecord == null) return Vector3.Zero;
|
|
|
|
var finalKnockback = _knockbackRecord.Direction.Normalized() * RKnockback.Modifier * _knockbackRecord.ForceMultiplier;
|
|
_knockbackRecord = null;
|
|
return finalKnockback;
|
|
}
|
|
} |