38 lines
1.1 KiB
GDScript
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
|