using Godot; using System; public partial class PlayerMovement : CharacterBody2D { [Export] public int Speed { get; set; } = 400; private AnimatedSprite2D _animatedSprite; public override void _Ready() { _animatedSprite = GetNode("AnimatedSprite2D"); } /*public override _Process(float _delta) { if (Input.IsActionPressed("ui_right")) { _animatedSprite.Play("run"); } else { _animatedSprite.Stop(); } }*/ public override void _Process(double delta) { SetAnimation(); } private void SetAnimation() { if (Velocity.X == 0 && Velocity.Y == 0) { _animatedSprite.SpeedScale = 0; } else { _animatedSprite.SpeedScale = 1; } if (Velocity.X > 0) { _animatedSprite.Play("walk_right"); } else if (Velocity.X < 0) { _animatedSprite.Play("walk_left"); } else if (Velocity.Y > 0) { _animatedSprite.Play("walk_down"); } else if (Velocity.Y < 0) { _animatedSprite.Play("walk_up"); } } public Vector2 GetInput() { return Input.GetVector("left", "right", "up", "down"); } public override void _PhysicsProcess(double delta) { var inputDirection = GetInput(); Velocity = inputDirection * (float)(Speed * delta); MoveAndSlide(); } }