extends CharacterBody2D const move_speed = 400 const acceleration = 0.25 const max_boost_speed = 800 var previous_direction = Vector2.ZERO var boost_speed = 0 var flute = null func _ready() -> void: flute = load("res://scripts/Instrument/Flute.gd").new() flute.set_scene_parent(get_tree().get_root()) func _physics_process(delta: float) -> void: move_and_slide() func _process(delta: float) -> void: var direction : Vector2 = Vector2.ZERO direction.x = Input.get_action_raw_strength("BOUGER_DROITE") - Input.get_action_raw_strength("BOUGER_GAUCHE") direction.y = Input.get_action_raw_strength("BOUGER_BAS") - Input.get_action_raw_strength("BOUGER_HAUT") if direction != Vector2.ZERO: if direction == previous_direction: if direction.x != 0 and direction.y != 0: boost_speed = min(boost_speed + acceleration / 16, (max_boost_speed - move_speed) / 8) else: boost_speed = min(boost_speed + acceleration, max_boost_speed - move_speed) else: boost_speed = 0 previous_direction = direction velocity = direction * (move_speed + boost_speed) if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT") or Input.is_action_just_pressed("JOUER_MUSIQUE_BAS") or Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE") or Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"): var direction_balle = Vector2.ZERO var angle = 0 if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT"): direction_balle = Vector2(0, -1) angle = 180 elif Input.is_action_just_pressed("JOUER_MUSIQUE_BAS"): direction_balle = Vector2(0, 1) angle = 0 elif Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE"): direction_balle = Vector2(1, 0) angle = 270 elif Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"): direction_balle = Vector2(-1, 0) angle = 90 flute.jouer_melodie(position, direction_balle, angle) pass