mirror of
https://github.com/MoonlitJolteon/crasher-sidescroller.git
synced 2025-11-02 05:25:01 +00:00
47 lines
1.1 KiB
GDScript
47 lines
1.1 KiB
GDScript
extends CharacterBody2D
|
|
|
|
@export var max_speed: float = 200.0
|
|
@export var acceleration: float = 50.0
|
|
@export var jump_force: float = -300.0
|
|
@export var base_weight: float = 1
|
|
@export var min_weight: float = 0.5
|
|
@export var max_weight: float = 2.0
|
|
|
|
|
|
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
|
|
|
|
var animation_locked: bool = false
|
|
var direction: Vector2 = Vector2.ZERO
|
|
var was_in_air: bool = false
|
|
var current_speed: float = 0.0
|
|
var current_weight: float = base_weight
|
|
var is_jumping: bool = false
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
|
|
func update_animation():
|
|
if not animation_locked:
|
|
if direction.x != 0:
|
|
animated_sprite.play("run")
|
|
else:
|
|
animated_sprite.play("idle")
|
|
|
|
func update_facing_direction():
|
|
if direction.x > 0:
|
|
animated_sprite.flip_h = false
|
|
elif direction.x < 0:
|
|
animated_sprite.flip_h = true
|
|
|
|
func jump():
|
|
velocity.y = jump_force
|
|
animated_sprite.play("jump_start")
|
|
animation_locked = true
|
|
|
|
func land():
|
|
animated_sprite.play("jump_end")
|
|
animation_locked = true
|
|
|
|
func _on_animated_sprite_2d_animation_finished() -> void:
|
|
if animated_sprite.animation == "jump_end":
|
|
animation_locked = false
|