extends Node3D # Referenz zur SnapZone (das Schloss) @export var snap_zone : XRToolsSnapZone @export var wheel: RigidBody3D # Einstellungen für die Bewegung @export var slide_offset : Vector3 = Vector3(0.5, 0, 0) # 0.5 auf X @export var animation_duration : float = 1.0 # Dauer in Sekunden # Wir merken uns, wo die Schublade am Anfang war var start_position : Vector3 func _ready(): # Startposition speichern (damit wir wissen, wo "zu" ist) start_position = position if snap_zone: # Signal verbinden: Wenn etwas reingelegt wird snap_zone.has_picked_up.connect(_on_unlock) # Optional: Wenn Schlüssel rausgenommen wird -> wieder zugehen? snap_zone.has_dropped.connect(_on_lock) else: printerr("FEHLER: Bitte SnapZone im Inspektor zuweisen!") func _on_unlock(_object): print("Schlüssel steckt! Schublade öffnet sich.") move_drawer(start_position + slide_offset) wheel.enabled = true func _on_lock(_object): print("Schlüssel entfernt! Schublade schließt sich.") move_drawer(start_position) func move_drawer(target_pos : Vector3): # Erstelle einen Tween (Animation) var tween = create_tween() # Damit es sich "mechanisch" aber weich anfühlt (Ease Out) tween.set_ease(Tween.EASE_OUT) tween.set_trans(Tween.TRANS_CUBIC) # Bewege "self" (also DrawerSpace) zur Zielposition tween.tween_property(self, "position", target_pos, animation_duration)