newlon/scripts/components/zombies/ZombieMover.cs
2025-06-26 20:18:19 +05:00

46 lines
1.2 KiB
C#

using Godot;
namespace Newlon.Components.Zombies;
public partial class ZombieMover : Node
{
[Export]
private FloatModifiers _speed;
[Export]
private float _speedControlMult;
private Node2D _zombie;
public override void _Ready()
{
_zombie = GetParent<Node2D>();
_speed = (FloatModifiers)_speed.Duplicate();
_speed.ChangePercentage((float)GD.RandRange(-0.05,0.05));
}
public override void _PhysicsProcess(double delta)
{
_zombie.Position -= _zombie.Transform.X
* (float)delta
* Utility.TileWidth
* GetParent<RuntimeZombieData>().LocalTimescale
* _speed.GetValue()
* _speedControlMult;
}
public void SetSpeedFlat(float speed)
{
_speed.SetFlat(speed);
}
public void SetSpeedPercentage(float speed)
{
_speed.SetPercentage(speed);
}
public void SetSpeedMult(float speed)
{
_speed.SetMult(speed);
}
public void AddMult(float amount)
{
_speed.ChangeMult(amount);
}
}