knockback forge implemented
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
using Godot;
|
||||
using System;
|
||||
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 = null!;
|
||||
private KnockbackRecord? _knockbackRecord;
|
||||
|
||||
public void RegisterKnockback(KnockbackRecord knockbackRecord)
|
||||
{
|
||||
@@ -18,9 +19,8 @@ public partial class CKnockback : Node3D, IKnockbackable
|
||||
{
|
||||
if (_knockbackRecord == null) return Vector3.Zero;
|
||||
|
||||
var knockbackDirection = GlobalPosition - _knockbackRecord.DamageRecord.SourceLocation;
|
||||
var finalKnockback = knockbackDirection.Normalized() * RKnockback.Modifier * _knockbackRecord.ForceMultiplier;
|
||||
_knockbackRecord = null!;
|
||||
var finalKnockback = _knockbackRecord.Direction.Normalized() * RKnockback.Modifier * _knockbackRecord.ForceMultiplier;
|
||||
_knockbackRecord = null;
|
||||
return finalKnockback;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,16 +1,12 @@
|
||||
using Godot;
|
||||
using System;
|
||||
using Movementtests.interfaces;
|
||||
|
||||
namespace Movementtests.scenes.components.knockback;
|
||||
|
||||
[GlobalClass, Icon("res://assets/ui/IconGodotNode/white/icon_wind.png")]
|
||||
public partial class RKnockback : Resource
|
||||
public partial class RKnockback(float modifier) : Resource
|
||||
{
|
||||
[Export]
|
||||
public float Modifier { get; set;}
|
||||
|
||||
public float Modifier { get; set;} = modifier;
|
||||
|
||||
public RKnockback() : this(1.0f) {}
|
||||
public RKnockback(float modifier)
|
||||
{
|
||||
Modifier = modifier;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user