Movement refactor
This commit is contained in:
28
scripts/components/Movement/GravityAbility.cs
Normal file
28
scripts/components/Movement/GravityAbility.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Godot;
|
||||
|
||||
namespace Mr.BrickAdventures.scripts.components;
|
||||
|
||||
[GlobalClass]
|
||||
public partial class GravityAbility : MovementAbility
|
||||
{
|
||||
public float AscendGravity { get; set; }
|
||||
public float DescendGravity { get; set; }
|
||||
|
||||
private float _gravity;
|
||||
|
||||
public override void Initialize(PlayerController controller)
|
||||
{
|
||||
base.Initialize(controller);
|
||||
_gravity = (float)ProjectSettings.GetSetting("physics/2d/default_gravity");
|
||||
}
|
||||
|
||||
public override Vector2 ProcessMovement(Vector2 velocity, double delta)
|
||||
{
|
||||
if (_body.IsOnFloor()) return velocity;
|
||||
|
||||
var gravityToApply = velocity.Y < 0 ? AscendGravity : DescendGravity;
|
||||
velocity.Y += gravityToApply * (float)delta;
|
||||
|
||||
return velocity;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user