43 lines
1.2 KiB
GDScript
43 lines
1.2 KiB
GDScript
extends Area3D
|
|
|
|
var game_manager: Node3D = null
|
|
var red_cube_delivered := false
|
|
|
|
func _ready():
|
|
# GameManager finden
|
|
game_manager = get_tree().get_first_node_in_group("game_manager")
|
|
if not game_manager:
|
|
game_manager = get_node_or_null("/root/Main/GameManager")
|
|
|
|
# Signal verbinden
|
|
body_entered.connect(_on_body_entered)
|
|
|
|
func _on_body_entered(body: Node3D):
|
|
# Prüfen ob es der rote Würfel ist
|
|
if body.name == "RedCube" or body.is_in_group("red_cube"):
|
|
if not red_cube_delivered:
|
|
red_cube_delivered = true
|
|
print("Roter Würfel abgeliefert!")
|
|
|
|
# GameManager benachrichtigen
|
|
if game_manager and game_manager.has_method("on_red_cube_delivered"):
|
|
game_manager.on_red_cube_delivered()
|
|
|
|
# Visuelles Feedback
|
|
show_success_effect()
|
|
|
|
func show_success_effect():
|
|
# Zielzone aufleuchten lassen
|
|
var mesh_instance = get_node_or_null("MeshInstance3D")
|
|
if not mesh_instance:
|
|
return
|
|
|
|
var material = mesh_instance.get_active_material(0) as StandardMaterial3D
|
|
if not material:
|
|
return
|
|
|
|
# Grün aufleuchten
|
|
var tween = create_tween()
|
|
tween.tween_property(material, "albedo_color", Color.GREEN, 0.3)
|
|
tween.tween_property(material, "albedo_color", Color(0, 1, 0, 0.5), 0.3)
|