extends Node3D @export var sensitivity: float @export var max_rotation_x: float = 25.0 @export var min_rotation_x: float = -80.0 var enabled: bool func _ready(): assert(rotation_order == EULER_ORDER_YXZ) func _unhandled_input(event): if event.is_action_pressed("look"): enabled = true DisplayServer.mouse_set_mode(DisplayServer.MOUSE_MODE_CAPTURED) if event.is_action_released("look"): enabled = false DisplayServer.mouse_set_mode(DisplayServer.MOUSE_MODE_VISIBLE) if !enabled: return if not event is InputEventMouseMotion: return rotation.x += deg_to_rad(-event.relative.y * sensitivity) rotation.y += deg_to_rad(-event.relative.x * sensitivity) rotation.x = clampf(rotation.x, deg_to_rad(min_rotation_x), deg_to_rad(max_rotation_x))