using Voile; using Voile.Extensions; using Voile.SceneGraph; using Voile.Utils; public class TestPlayer : RectangleShape2d { public float SprintSpeed { get; set; } = 400f; protected override void OnStart() { base.OnStart(); Color = Color.Cyan; _camera = new Camera2d() { Current = true, }; if (Layer is not null) { Layer.AddEntity(_camera); } } protected override void OnUpdate(double dt) { base.OnUpdate(dt); var sprinting = Input.IsActionDown("sprint"); _speed = sprinting ? SprintSpeed : 200f; var velocity = Input.GetInputDirection("left", "right", "up", "down") * _speed; Position += velocity * (float)dt; if (_camera is not null) { _camera.Position = _camera.Position.Lerp(Position, dt * 5f); } } private Logger _logger = new(nameof(TestPlayer)); private float _speed = 200f; private Camera2d? _camera; }