This commit is contained in:
Team3
2026-09-16 20:06:38 +02:00
parent 7c4edaa439
commit a86d737d39
10 changed files with 252 additions and 96 deletions

View File

@@ -15,6 +15,8 @@ var _erde_version := -1
var auf_erde := false
var _fokus: Node3D = null
var _fokus_mensch: Node3D = null
var _interaktive: Array = [] # Ansprechbares der aktiven Welt, einmal gesammelt
var _fokus_takt := 0.0 # Fokus, Markierung und Hinweis alle 0,05 s
func _ready() -> void:
@@ -119,6 +121,8 @@ func _aktivieren(neu: Node3D) -> void:
w.set("spieler", player if an else null)
w.call("aktiv_setzen", an)
welt = neu
_interaktive = []
_fokus_takt = 0.0
Game.teleport_lock = 1.0
_fokus = null
_fokus_mensch = null
@@ -134,6 +138,10 @@ func _process(delta: float) -> void:
return
Game.notiz_sperre = maxf(0.0, Game.notiz_sperre - delta)
Game.situationen_ticken(dt, auf_erde and not Game.schlaeft_ziel())
_fokus_takt -= delta
if _fokus_takt > 0.0:
return
_fokus_takt = 0.05
_fokus_suchen()
_markieren()
_dabeisein()
@@ -177,9 +185,13 @@ func _fokus_suchen() -> void:
_fokus_mensch = null
var p := player.global_position
var best := REICHWEITE_OBJEKT
for n in get_tree().get_nodes_in_group("interactable"):
if not welt.is_ancestor_of(n):
continue # die andere Welt liegt im selben Raum
if _interaktive.is_empty():
for n in get_tree().get_nodes_in_group("interactable"):
if welt.is_ancestor_of(n): # die andere Welt liegt im selben Raum
_interaktive.append(n)
for n in _interaktive:
if not is_instance_valid(n):
continue
var d: float = p.distance_to((n as Node3D).global_position)
if d < best:
best = d