vrp-gruppe-sechs/disco-escape-roomv-5/schalter_danceFloor.gd

48 lines
1.5 KiB
GDScript

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