Shape Queries

Overlap dotazy

Pozice označuje střed dotazovaného tvaru. Rozměry Boxu jsou celé velikosti; výška Capsule je celková výška včetně konců a musí být větší než dvojnásobek poloměru. Pozici chodidel Characteru nepoužívejte jako střed Capsule bez odpovídajícího výškového posunu.

GML
jolt_overlap_box(x, y, z, width, depth, height, options=undefined)
jolt_overlap_sphere(x, y, z, radius, options=undefined)
jolt_overlap_capsule(x, y, z, height, radius, options=undefined)
jolt_overlap_shape(shape, x, y, z, options=undefined)
APIChování
clear / overlapNepřítomnost/přítomnost zásahů; vyhodnocujte pouze při error_code rovném nule.
count / hitsJeden nejhlubší kontakt na cílové těleso, nejvýše do kapacity světa 4096 těles. Pořadí podle vzdálenosti není garantováno.
error_code / error_messageNula a prázdná zpráva při úspěchu, včetně platného výsledku bez kolize.
GML
var r = jolt_overlap_sphere(0, 0, 2, 0.5);
if (r.error_code == 0) {
    for (var i = 0; i < r.count; ++i) {
        show_debug_message(r.hits[i].penetration_depth);
    }
}

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_overlap_boxjolt_overlap_box(x, y, z, width, depth, height, options = undefined)Okamžitý překryv bez vytvoření Body, světová pozice m. Box plné kladné rozměry, sphere radius>0, capsule totalheight>2radius; generic živý nestatic-only JoltShape. Options rotation XYZW/rotation_euler°(má přednost), layers/mask/ignore. Výsledek struct {clear, overlap, hit, count, hits, error_code, error_message}; při chybě může clear být true, proto vždy ověř error_code.
jolt_overlap_capsulejolt_overlap_capsule(x, y, z, height, radius, options = undefined)Okamžitý překryv bez vytvoření Body, světová pozice m. Box plné kladné rozměry, sphere radius>0, capsule totalheight>2radius; generic živý nestatic-only JoltShape. Options rotation XYZW/rotation_euler°(má přednost), layers/mask/ignore. Výsledek struct {clear, overlap, hit, count, hits, error_code, error_message}; při chybě může clear být true, proto vždy ověř error_code.
jolt_overlap_shapejolt_overlap_shape(shape, x, y, z, options = undefined)Okamžitý překryv bez vytvoření Body, světová pozice m. Box plné kladné rozměry, sphere radius>0, capsule totalheight>2radius; generic živý nestatic-only JoltShape. Options rotation XYZW/rotation_euler°(má přednost), layers/mask/ignore. Výsledek struct {clear, overlap, hit, count, hits, error_code, error_message}; při chybě může clear být true, proto vždy ověř error_code.
jolt_overlap_spherejolt_overlap_sphere(x, y, z, radius, options = undefined)Okamžitý překryv bez vytvoření Body, světová pozice m. Box plné kladné rozměry, sphere radius>0, capsule totalheight>2radius; generic živý nestatic-only JoltShape. Options rotation XYZW/rotation_euler°(má přednost), layers/mask/ignore. Výsledek struct {clear, overlap, hit, count, hits, error_code, error_message}; při chybě může clear být true, proto vždy ověř error_code.