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 UI.focus: direction_changed.emit(Vector3.ZERO) return update_direction() update_actions(event) if Input.is_key_pressed(KEY_P): get_tree().paused = !get_tree().paused 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)