Three compounding issues, found via user testing:
1. Sprite was 2.56x2.56 units (raw 256px checkerboard at default
pixel_size) — 5x wider than the player, and collision shapes sized
to roughly match. Gave AnimatedSprite3D an explicit pixel_size
(0.004) for a ~1 unit sprite, shrunk the solid CylinderShape3D to
radius 0.4/height 1.0 and the Area3D trigger sphere to radius 0.6
accordingly (still >= the solid radius, so touching = interactable
holds).
2. InteractionPrompt had zero vertical offset, sitting dead center of
the (huge) sprite — rendering behind/inside it, so the "[F]
Interact" hint never appeared even though proximity detection and
the keypress itself worked (confirmed by the user: pressing F did
work, the hint just never showed telling them to). Gave both
NameLabel and InteractionPrompt proper offsets above the sprite.
3. Once the collision shapes shrank, a pre-existing ~0.7 unit gap
between each POI's hand-placed Y (computed with the same
radius-only height approximation that's only exact along a
facet's straight edges, not its interior — same class of error as
the earlier Ort6 out-of-bounds bug) and the true terrain surface
became consequential: the small collider mostly floated above the
real ground, giving wildly direction-dependent, sometimes entirely
missing contact/interaction depending on approach angle. Root-fixed
rather than re-deriving 36+ positions' exact heights by hand again:
poi.gd/poi_gate.gd now raycast straight down against the terrain
in _ready() (after one physics_frame, so the terrain's collision
shape has had time to register) and snap themselves onto the real
surface plus a small clearance.
Verified headless: approaching a POI from 4 different directions now
gives consistent ~0.56 unit contact distance and player_nearby=true
in all four (previously: two directions barely touched at ~0.05 units
with interaction never triggering, the other two behaved correctly —
direction-dependent failure, now gone). Re-ran the full 6-gate chain
(still passes) and gate-to-border-prop clearance across 3 randomized
layouts (still 1.3-1.9 units clear, no regression).