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#

GML
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#

GML
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íkSignaturaKontrakt operace
jolt_debug_clear_raycastsjolt_debug_clear_raycasts()Vyprázdní pouze diagnostickou historii příslušných dotazů; bez návratového potvrzení, nemění fyziku.