33 lines
534 B
GDScript3
33 lines
534 B
GDScript3
|
|
class_name Interactable extends StaticBody3D
|
||
|
|
|
||
|
|
@export var prompt: String = "Взаимодействовать"
|
||
|
|
@export var enabled: bool = false
|
||
|
|
|
||
|
|
signal interacted(player: Node)
|
||
|
|
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
_apply_collision()
|
||
|
|
|
||
|
|
|
||
|
|
func set_interactable(v: bool) -> void:
|
||
|
|
enabled = v
|
||
|
|
_apply_collision()
|
||
|
|
|
||
|
|
|
||
|
|
func _apply_collision() -> void:
|
||
|
|
if enabled:
|
||
|
|
collision_layer = 1
|
||
|
|
else:
|
||
|
|
collision_layer = 0
|
||
|
|
|
||
|
|
|
||
|
|
func get_prompt() -> String:
|
||
|
|
return prompt
|
||
|
|
|
||
|
|
|
||
|
|
func interact(player: Node) -> void:
|
||
|
|
if not enabled:
|
||
|
|
return
|
||
|
|
interacted.emit(player)
|