extends CharacterBody2D
@export var move_speed: float = 400.0
var current_animation: String = "idle"
var angle: int = 0
func _physics_process(delta: float) -> void:
current_animation = "idle"
var direction = Input.get_vector("move_left", "move_right", "move_up", "move_down")
if direction.length() != 0:
angle = direction.angle() / (PI/8)
angle = wrapi(int(angle), 0, 16)
current_animation = "walk"
velocity = direction * move_speed
move_and_slide()
$AnimatedSprite2D.play(current_animation + str(angle))
func _process(delta: float) -> void:
var snap_angle = (TAU/16)
var half_snap_angle = snap_angle / 2
var snapped_direction = snappedf(angle + half_snap_angle, snap_angle) - half_snap_angle
var mouse = get_local_mouse_position()
angle = snappedf(mouse.angle(), PI/8) / (PI/8)
angle = wrapi(int(angle), 0, 16)