Files
GMTK25/player/player.gd
Minimata 01aee48501
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m11s
feat: player movement and animations
2025-08-01 10:40:47 +02:00

57 lines
1.3 KiB
GDScript

extends CharacterBody2D
@export_range(10, 1000, 10, "or_greater")
var speed = 300.0
@export_range(0, 0.2, 0.001, "or_greater")
var acceleration = 0.5
@export_group("Airborne")
@export_range(0, 1000, 10, "or_greater")
var jump_velocity = 400.0
@export_range(0, 10, 0.1, "or_greater")
var gravity_modifier = 1
@onready var knight: AnimatedSprite2D = $Knight
@onready var red_hood: AnimatedSprite2D = $RedHood
var animated_sprites = []
func _ready() -> void:
animated_sprites = [
knight,
red_hood
]
func _physics_process(delta: float) -> void:
if not is_on_floor():
velocity += get_gravity() * delta * gravity_modifier
# Handle jump.
# if Input.is_action_just_pressed("ui_accept") and is_on_floor():
# velocity.y = -jump_velocity
var direction := Input.get_axis("move_left", "move_right")
if direction > 0:
for sprite in animated_sprites:
sprite.flip_h = false
if direction < 0:
for sprite in animated_sprites:
sprite.flip_h = true
if velocity.x != 0:
for sprite in animated_sprites:
sprite.play("run")
else:
for sprite in animated_sprites:
sprite.play("idle")
if direction:
var smoothed_speed = speed * smoothstep(0, 1, acceleration)
velocity.x += direction * smoothed_speed
velocity.x = clampf(velocity.x, -speed, speed)
else:
velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide()