vrp-years-apart/DoorLock.gd

46 lines
1.2 KiB
GDScript

extends RigidBody3D
# Referenz zum Griff (der das Pickable-Skript hat)
@export var door_handle : XRToolsPickable
# Referenz zur SnapZone (der "WheelSpace")
@export var wheel_snap_zone : XRToolsSnapZone
var wheel_inserted : bool = false
func _ready():
# Am Start die Tür einfrieren
freeze = true
if door_handle:
# Signale verbinden
door_handle.picked_up.connect(_on_grab)
door_handle.dropped.connect(_on_release)
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)
wheel_snap_zone.has_dropped.connect(_on_wheel_removed)
func _on_wheel_inserted(_object):
print("Rad eingesetzt! Tür wird entriegelt.")
wheel_inserted = true
func _on_wheel_removed(_object):
print("Rad entfernt! Tür wird verriegelt.")
wheel_inserted = false
func _on_grab(_pickable):
# Wenn angefasst: Physik aktivieren
if wheel_inserted:
freeze = false
sleeping = false # Aufwecken, damit sie sofort reagiert
func _on_release(_pickable):
# Wenn losgelassen: Sofort wieder einfrieren
freeze = true
# WICHTIG: Geschwindigkeit nullen, damit sie sofort stoppt und nicht nachrutscht
linear_velocity = Vector3.ZERO
angular_velocity = Vector3.ZERO