27 lines
726 B
C#
27 lines
726 B
C#
using Godot;
|
|
using System;
|
|
using Movementtests.interfaces;
|
|
|
|
[GlobalClass]
|
|
public partial class CKnockback : Node3D, IKnockbackable
|
|
{
|
|
[Export] public RKnockback RKnockback { get; set;}
|
|
|
|
private DamageRecord _damageRecord = null;
|
|
|
|
public void RegisterKnockback(IDamageable source, DamageRecord damageRecord)
|
|
{
|
|
_damageRecord = damageRecord;
|
|
}
|
|
|
|
public Vector3 ComputeKnockback()
|
|
{
|
|
if (_damageRecord == null) return Vector3.Zero;
|
|
|
|
var knockbackDirection = GlobalPosition - _damageRecord.Source.GlobalPosition;
|
|
_damageRecord = null;
|
|
var finalKnockback = knockbackDirection.Normalized() * RKnockback.Modifier;
|
|
return finalKnockback;
|
|
}
|
|
}
|