diff --git a/objects/player/player.gd b/objects/player/player.gd index 8e21f2b..e1116cc 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -428,14 +428,9 @@ func _process_climbing(delta: float) -> void: # check if still on ladder ladder_detector.force_raycast_update() - if ladder_detector.get_collider() != _attached_ladder: - if input_dir == -1.0: - state_chart.send_event("ladder_peak") - return - else: - state_chart.send_event("ladder_detach") - return - else: + var collider = ladder_detector.get_collider() + if collider and collider.is_in_group("ladder"): + _attached_ladder = collider if Input.is_action_just_pressed("jump"): var horizontal_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: @@ -468,6 +463,13 @@ func _process_climbing(delta: float) -> void: else: global_position.x = _attached_ladder.right_snap graphics.scale.x = -1.0 + else: + if input_dir == -1.0: + state_chart.send_event("ladder_peak") + return + else: + state_chart.send_event("ladder_detach") + return func _process_jump(delta: float) -> void: if velocity.y >= 0.0: