openable_door.gd 576 B

1234567891011121314151617181920212223
  1. extends StaticBody3D
  2. var open = false
  3. @onready var door = get_parent()
  4. @onready var angle = door.rotation_degrees
  5. func _ready():
  6. if not has_meta("interactable") and not has_meta("text"):
  7. set_meta("interactable", true)
  8. set_meta("text", "open")
  9. func interact(_player):
  10. if open:
  11. if has_node("AudioStreamPlayer3D"):
  12. $AudioStreamPlayer3D.play()
  13. set_meta("text", "open")
  14. door.rotation_degrees = angle
  15. else:
  16. if has_node("AudioStreamPlayer3D"):
  17. $AudioStreamPlayer3D.play()
  18. set_meta("text", "close")
  19. door.rotation_degrees = Vector3(0, 0, 100)
  20. open = !open