vrp-years-apart/DoorLock.gd

38 lines
1.1 KiB
GDScript

extends Node3D
# Referenz zur Tür (der RigidBody)
@export var door_rigidbody : RigidBody3D
# Referenz zur SnapZone (der "WheelSpace")
@export var wheel_snap_zone : XRToolsSnapZone
func _ready():
# Wir verbinden das Signal der SnapZone
if wheel_snap_zone:
# "has_picked_up" wird gefeuert, wenn die Zone ein Objekt fängt
wheel_snap_zone.has_picked_up.connect(_on_wheel_inserted)
# Optional: Wenn man das Rad wieder rausnimmt, soll die Tür wieder zu gehen?
# Dann aktiviere die nächste Zeile:
# wheel_snap_zone.has_dropped.connect(_on_wheel_removed)
# Sicherstellen, dass die Tür am Start zu ist
lock_door()
func _on_wheel_inserted(_object):
print("Rad eingesetzt! Tür wird entriegelt.")
unlock_door()
func _on_wheel_removed(_object):
print("Rad entfernt! Tür wird verriegelt.")
lock_door()
func unlock_door():
if door_rigidbody:
door_rigidbody.freeze = false # Physik an -> Tür beweglich
# Optional: Schlafeinschlafen verhindern
func lock_door():
if door_rigidbody:
door_rigidbody.freeze = true # Physik aus -> Tür fest wie eine Wand