Player script: ```extends CharacterBody2D
const SPEED = 130.0
const JUMP_VELOCITY = -300.0
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
var is_alive = true # Variable for the die() funcion.
func _physics_process(delta: float) -> void: # physics_process runs all the time. It will override your animations that are outside of this function.
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta
# Handle jump.
if Input.is_action_just_pressed("jump") and is_on_floor() and is_alive:
velocity.y = JUMP_VELOCITY
# Get the input direction: -1, 0, 1
var direction = Input.get_axis("move_left", "move_right")
if is_alive: # This condition disables the following on func die().
# Flip the sprite
if direction > 0:
animated_sprite.flip_h = false
elif direction < 0:
animated_sprite.flip_h = true
# Play animations
if is_on_floor():
if direction == 0:
animated_sprite.play("idle")
else:
animated_sprite.play("run")
else:
animated_sprite.play("jump2")
# Apply movement
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
func die():
if not is_alive:
return
is_alive = false # When is_alive is false and stops all other animations.
while not is_on_floor(): # Renables gravity allowing player to fall to ground if they die in air.
move_and_slide()
$AnimationPlayer.play("death") # Make sure to set the frame interval to .1 (10 FPS).
Engine.time_scale = 0.5
func reset_game():
Engine.time_scale = 1.0
get_tree().reload_current_scene()