class_name PlayerController extends Controller var player: Player var movement: MovementComponent var skills: SkillsComponent func _init(new_player: Player): player = new_player movement = player.get_node("Movement") skills = player.get_node("Skills") name = "Controller" func _unhandled_input(event: InputEvent): if Global.interacting_with_ui: return update_direction() update_actions(event) func update_direction(): var move := Input.get_vector("move_left", "move_right", "move_forward", "move_backward") var direction := (Global.camera.global_basis * Vector3(move.x, 0, move.y)) direction.y = 0 direction = direction.normalized() direction_changed.emit(direction) func update_actions(event: InputEvent): if event.is_action_pressed("jump") && movement && movement.can_jump(): jumped.emit() for i in range(4): if event.is_action_pressed("skill_%d" % (i + 1)): used_skill.emit(i)