-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTriggerArea.gd
More file actions
48 lines (38 loc) · 1.79 KB
/
TriggerArea.gd
File metadata and controls
48 lines (38 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
extends Area3D
@export var message_title: String = "ПОДСКАЗКА"
@export var message_text: String = "Ты нашел подсказку!"
@export var show_once: bool = true
@export var show_on_enter: bool = true # Показывать при входе в зону
@export var require_interact: bool = false # Требовать нажатия E
@export var interact_key: String = "interact"
var already_triggered = false
var player_in_area = false
func _ready():
# Скрываем визуализацию в игре
if has_node("MeshInstance3D"):
$MeshInstance3D.visible = Engine.is_editor_hint()
# Подключаем сигналы
body_entered.connect(_on_body_entered)
body_exited.connect(_on_body_exited)
func _process(_delta):
# Если требуется взаимодействие и игрок в зоне
if player_in_area and require_interact and Input.is_action_just_pressed(interact_key):
if !show_once or (show_once and !already_triggered):
show_trigger_message()
already_triggered = true
func _on_body_entered(body):
if body.name == "Player" or body.is_in_group("Player"):
player_in_area = true
# Если показываем при входе и не требуется взаимодействие
if show_on_enter and !require_interact:
if !show_once or (show_once and !already_triggered):
show_trigger_message()
already_triggered = true
func _on_body_exited(body):
if body.name == "Player" or body.is_in_group("Player"):
player_in_area = false
func show_trigger_message():
# Используем GameManager для показа сообщения
GameManager.show_global_message(message_title, message_text)
# Можно добавить звук или другие эффекты
print("Триггер активирован: ", name)