extends CharacterBody2D const SPEED = 380.0 const DASH_SPEED = 600 const HORIZONTAL_DASH_MULT = 1.8 const FRICTION = 100 const GRAVITY_MULT = 0.8 const JUMP_VELOCITY = -410.0 const DASH_LENGTH = 0.2 var fall_timer = 0.0 var teleport_cooldown = 0 var jumps = 0 var dashes = 1 var dashing = false var death_threshold = 1000 var coins = 0 func _ready() -> void: pass func refresh_dash(new_dashes): if new_dashes: dashes = new_dashes else: dashes = 1 func refresh_jump(new_jumps): if new_jumps: jumps = new_jumps else: jumps = 1 func on_teleport(): refresh_jump(1) teleport_cooldown = 1 $Camera2D.position_smoothing_enabled = true await get_tree().create_timer(1).timeout teleport_cooldown = 0 func on_death(): #$BackgroundMusic position = %LevelStart.position func _process(delta: float) -> void: if Input.is_action_just_released("restart") or (Input.is_action_pressed("controller_restart_left") and Input.is_action_pressed("controller_restart_right")): get_tree().reload_current_scene() if Input.is_action_just_pressed("jump"): if is_on_floor(): velocity.y = JUMP_VELOCITY elif !is_on_floor() and jumps >= 1: jumps -= 1 velocity.y = JUMP_VELOCITY if Input.is_action_pressed("jump") and is_on_wall_only(): print("WALL HANGING") #velocity.y = 0 #velocity.x = 0 var direction = Input.get_axis("move_left","move_right") if direction < 0: $Sprite2D.flip_h = true $Sprite2D/HatSprite.flip_h = true elif direction > 0: $Sprite2D.flip_h = false $Sprite2D/HatSprite.flip_h = false if Input.is_action_just_pressed("dash") and dashes > 0: dashing = true dashes -= 1 velocity = Vector2( Input.get_axis("dash_left","dash_right") * HORIZONTAL_DASH_MULT, Input.get_axis("dash_up","dash_down") ) * DASH_SPEED await get_tree().create_timer(DASH_LENGTH).timeout dashing = false elif direction and !dashing: velocity.x = direction * SPEED $Sprite2D.play("running") $Sprite2D/HatSprite.play("running") elif !dashing: velocity.x = move_toward(velocity.x, 0, FRICTION) $Sprite2D.play("idle") $Sprite2D/HatSprite.play("idle") #print("PLAYER X POSITION: " + str(position.y)) if position.y >= death_threshold: print("SLASH KILL") on_death() fall_timer += 1*delta if is_on_floor(): fall_timer = 0 refresh_jump(1) refresh_dash(1) #%Player2D.get_node("Camera2D").position_smoothing_speed = %Player2D.CAMERA_SMOOTHING_SPEED if is_on_wall(): refresh_jump(1) refresh_dash(1) #%Player2D.get_node("Camera2D").position_smoothing_speed = %Player2D.CAMERA_SMOOTHING_SPEED if is_on_ceiling(): refresh_jump(1) refresh_dash(1) if fall_timer > 3: pass #get_tree().reload_current_scene() func _physics_process(delta: float) -> void: if not is_on_floor(): velocity += (get_gravity() * GRAVITY_MULT) * delta move_and_slide()