class_name CameraRig extends Node3D @export var sensitivity := 0.005 @export var follow_speed := 5.0 @export var cam: Camera3D var target: Node3D # Controlled by PlayerController var _dragging := false func _unhandled_input(event: InputEvent) -> void: if event is InputEventMouseButton: match event.button_index: MOUSE_BUTTON_LEFT: _dragging = event.pressed MOUSE_BUTTON_WHEEL_UP: cam.position.z = maxf(cam.position.z - 1.0, 3.0) MOUSE_BUTTON_WHEEL_DOWN: cam.position.z = minf(cam.position.z + 1.0, 30.0) elif event is InputEventMouseMotion and _dragging: rotation.y -= event.relative.x * sensitivity rotation.x = clampf( rotation.x - event.relative.y * sensitivity, deg_to_rad(-80.0), deg_to_rad(-10.0) ) func _process(delta: float) -> void: if target: global_position = global_position.lerp(target.global_position, follow_speed * delta)