extends Area3D # Exportierte Variable, damit du im Inspector den Ziel-Node auswählen kannst @export var target_node: Node3D @export var right_controller: XRController3D @export var activation_distance: float = 1.0 # 100cm Reichweite # Optional: Farben für verschiedene Zustände @export var color_visible: Color = Color.GREEN @export var color_hidden: Color = Color.RED var button_was_pressed = false func _ready(): # Setze initiale Farbe basierend auf Sichtbarkeit if target_node: _update_color() func _process(_delta): if not right_controller: return # Prüfe Distanz zum Controller var distance = global_position.distance_to(right_controller.global_position) var button_pressed = right_controller.is_button_pressed("ax_button") # Toggle wenn nah genug und Button neu gedrückt if distance < activation_distance and button_pressed and not button_was_pressed: toggle_visibility() button_was_pressed = button_pressed func toggle_visibility(): if target_node: # Schalte Sichtbarkeit um target_node.visible = !target_node.visible _update_color() print("Node '%s' ist jetzt %s" % [target_node.name, "sichtbar" if target_node.visible else "versteckt"]) else: print("Kein Ziel-Node zugewiesen!") func _update_color(): # Ändere die Farbe der Box basierend auf dem Zustand if has_node("MeshInstance3D"): var mesh_instance = get_node("MeshInstance3D") var material = StandardMaterial3D.new() material.albedo_color = color_visible if target_node.visible else color_hidden mesh_instance.material_override = material