Raycasting
Debugování a výkon
Ukazuje vizuální kontrolu rays a doporučení pro předvídatelné opakované dotazy.
Raycasts jsou synchronní narrow-phase queries. Debug recording je volitelný; pokud je aktivní, GML debug renderer uchovává omezenou historii, kterou lze vykreslit spolu s ostatní physics diagnostikou.
Zapnutí vizualizace#
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_RAYCASTS, true);
var hit = jolt_raycast(0, 0, 2, 10, 0, 2);
jolt_debug_draw();Debug historie#
- Uchovává se nejvýše 32 posledních raycast records.
- Minutí se vykreslí až k požadovanému endpointu.
- Hit uchová position a normal povrchu.
- jolt_raycast_all() zaznamená jedinou čáru končící na nejbližším seřazeném hitu, nikoliv každý vrácený hit.
- jolt_debug_clear_raycasts() odstraní uchovanou historii.
Vymazání uchovaných rays#
jolt_debug_clear_raycasts();Hledání příčiny nečekaného minutí#
- Přečtěte jolt_get_error() ihned po volání.
- Ověřte úspěšné jolt_start() a různé konečné endpoints.
- Vykreslete ray a ověřte, že endpoint je ve world space.
- Zkontrolujte layer mask a pamatujte, že mask 0 znamená všechny vrstvy.
- Ověřte, zda cíl není CharacterVirtual nebo Cloth.
- U mesh geometry otestujte front side a winding trojúhelníku.
- Pokud ray začíná ve zdrojovém collideru, ignorujte body nebo upravte origin.
Doporučení pro výkon#
- Když stačí nejbližší body, preferujte jolt_raycast(); nevytváří veřejné GML pole.
- jolt_raycast_all() použijte jen pro další seřazená bodies nebo GML post-filtering.
- V hot loops znovu používejte layer references a filter structs namísto zbytečné tvorby polí.
- Udržujte vzdálenost a počet dotazů pouze tak velké, jak gameplay vyžaduje.
- Mimo diagnostiku vypněte JOLT_DEBUG_RAYCASTS.
- Před stovkami rays v každém Step profilujte reprezentativní scénu.
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| jolt_debug_clear_raycasts | jolt_debug_clear_raycasts() | Vyprázdní pouze diagnostickou historii příslušných dotazů; bez návratového potvrzení, nemění fyziku. |