Shape Queries

Shape Casts

Cast posouvá tvar mezi dvěma středy ve světových souřadnicích s neměnnou orientací. Není to rotační sweep a sám neřeší pohyb ani klouzání podél překážek. Základní variantu použijte pro nejbližší překážku, _all pro všechna tělesa na trase.

GML
jolt_cast_box(sx, sy, sz, ex, ey, ez, width, depth, height, options=undefined)
jolt_cast_sphere(sx, sy, sz, ex, ey, ez, radius, options=undefined)
jolt_cast_capsule(sx, sy, sz, ex, ey, ez, height, radius, options=undefined)
jolt_cast_shape(shape, sx, sy, sz, ex, ey, ez, options=undefined)
// The same argument lists apply to jolt_cast_*_all.

Platné minutí má hit: false, fraction: 1 a distance: 0; distance při minutí není délka celého dotazu. Varianta _all zachovává nejbližší zásah každého tělesa a řadí podle fraction. Počáteční průnik má fraction: 0 a initial_overlap: true; vyžaduje řešení průniku, nikoliv běžný pohyb vpřed.

GML
var r = jolt_cast_sphere(0, 0, 2, 10, 0, 2, 0.25);
if (r.error_code != 0) show_debug_message(r.error_message);
else if (r.hit) show_debug_message(r.shape_position);

var hits = jolt_cast_sphere_all(0, 0, 2, 10, 0, 2, 0.25);
if (jolt_has_error()) show_debug_message(jolt_get_error_message());
else show_debug_message(array_length(hits));

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_cast_boxjolt_cast_box(sx,sy,sz,ex,ey,ez,width,depth,height,options=undefined)Světové start/end body m, pevná orientace a rozměry jako overlap; generic pouze convex-compatible resource. Neotáčí tvar během sweepu. Nejbližší hit struct nebo hit:false, error_code/message. Pole position, query_position, shape_position, normal, penetration_depth, fraction, distance, subshape IDs, initial_overlap, body/entity.
jolt_cast_box_alljolt_cast_box_all(sx,sy,sz,ex,ey,ez,width,depth,height,options=undefined)Stejné parametry jako nearest cast, vrací pole hitů místo jednoho. [] znamená bez zásahu nebo chybu; chybu rozliš přes jolt_get_error. Žádné dočasné těleso ani posun existujícího tělesa.
jolt_cast_capsulejolt_cast_capsule(sx,sy,sz,ex,ey,ez,height,radius,options=undefined)Světové start/end body m, pevná orientace a rozměry jako overlap; generic pouze convex-compatible resource. Neotáčí tvar během sweepu. Nejbližší hit struct nebo hit:false, error_code/message. Pole position, query_position, shape_position, normal, penetration_depth, fraction, distance, subshape IDs, initial_overlap, body/entity.
jolt_cast_capsule_alljolt_cast_capsule_all(sx,sy,sz,ex,ey,ez,height,radius,options=undefined)Stejné parametry jako nearest cast, vrací pole hitů místo jednoho. [] znamená bez zásahu nebo chybu; chybu rozliš přes jolt_get_error. Žádné dočasné těleso ani posun existujícího tělesa.
jolt_cast_shapejolt_cast_shape(shape,sx,sy,sz,ex,ey,ez,options=undefined)Světové start/end body m, pevná orientace a rozměry jako overlap; generic pouze convex-compatible resource. Neotáčí tvar během sweepu. Nejbližší hit struct nebo hit:false, error_code/message. Pole position, query_position, shape_position, normal, penetration_depth, fraction, distance, subshape IDs, initial_overlap, body/entity.
jolt_cast_shape_alljolt_cast_shape_all(shape,sx,sy,sz,ex,ey,ez,options=undefined)Stejné parametry jako nearest cast, vrací pole hitů místo jednoho. [] znamená bez zásahu nebo chybu; chybu rozliš přes jolt_get_error. Žádné dočasné těleso ani posun existujícího tělesa.
jolt_cast_spherejolt_cast_sphere(sx,sy,sz,ex,ey,ez,radius,options=undefined)Světové start/end body m, pevná orientace a rozměry jako overlap; generic pouze convex-compatible resource. Neotáčí tvar během sweepu. Nejbližší hit struct nebo hit:false, error_code/message. Pole position, query_position, shape_position, normal, penetration_depth, fraction, distance, subshape IDs, initial_overlap, body/entity.
jolt_cast_sphere_alljolt_cast_sphere_all(sx,sy,sz,ex,ey,ez,radius,options=undefined)Stejné parametry jako nearest cast, vrací pole hitů místo jednoho. [] znamená bez zásahu nebo chybu; chybu rozliš přes jolt_get_error. Žádné dočasné těleso ani posun existujícího tělesa.