Tapered Capsule
Vytvoří kapsli orientovanou podél Z s nezávislou velikostí obou zaoblených konců.
Je vhodná pro organické collision volumes, rukojeti, končetiny a další konvexní bodies zužující se k jednomu konci. Veřejný origin leží uprostřed mezi oběma špičkami. Podporuje Dynamic, Static a Kinematic.
Syntaxe#
jolt_tapered_capsule_create_dynamic(x, y, z, height, top_radius, bottom_radius, options=undefined)
jolt_tapered_capsule_create_static(x, y, z, height, top_radius, bottom_radius, options=undefined)
jolt_tapered_capsule_create_kinematic(x, y, z, height, top_radius, bottom_radius, options=undefined)Argumenty#
| Argument | Typ | Popis |
|---|---|---|
| x, y, z | Real | World-space střed mezi dvěma vnějšími špičkami. |
| height | Real | Celková tip-to-tip výška podél lokální Z; musí být větší než dvojnásobek většího radiusu. |
| top_radius | Real | Konečný poloměr horního konce > 0. |
| bottom_radius | Real | Konečný poloměr spodního konce > 0. |
| options | Struct | Volitelné společné body options. |
Geometrie a orientace#
Střed horní sféry leží v lokální Z=height/2-top_radius a střed spodní sféry v -height/2+bottom_radius. Wrapper předává native half height rovné části (height-top_radius-bottom_radius)/2, převádí native osu Y na veřejnou Z a kompenzuje interní těžiště, aby veřejný body origin zůstal uprostřed mezi špičkami.
Návrat a chování#
Vrací JoltBody nebo undefined. Podporuje běžné JoltBody vlastnosti, collision layers, sensor režim, kontakty a raycasty; omezení motion typu se uplatní na síly, mass a velocity. Stejné radiusy vytvoří profil podobný běžné Capsule, rozdílné radiusy vytvoří skutečně zúžený tvar. Neplatné rozměry nebo options zruší vytvoření atomicky.
Reusable JoltShape#
var shape = jolt_shape_tapered_capsule(height, top_radius, bottom_radius, cache_key=undefined);
var body = shape.create_dynamic(x, y, z, options);
var static_body = shape.create_static(x, y, z, options);
var kinematic_body = shape.create_kinematic(x, y, z, options);Reusable resource používá stejnou validaci a lifecycle jako ostatní JoltShape resources. jolt_shape_load() přijímá také platný TaperedCapsule .jcol asset.
Low-Level / Advanced API#
Přímý ergonomický low-level GML creator neexistuje. Shape se přenáší verzovaným resource formátem přes jolt_world_shape_command(); použijte high-level creator nebo jolt_shape_tapered_capsule().
Příklad#
var body = jolt_tapered_capsule_create_dynamic(-2, 0, 6, 4, 0.35, 0.8, {
mass: 2,
angular_velocity: {x:0.3, y:0.5, z:0.2}
});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_tapered_capsule_create_dynamic | jolt_tapered_capsule_create_dynamic(x = 0, y = 0, z = 0, height = 2, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. celková výška >2*max(top, bottom radius), kladné poloměry m. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |
| jolt_tapered_capsule_create_kinematic | jolt_tapered_capsule_create_kinematic(x = 0, y = 0, z = 0, height = 2, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. celková výška >2*max(top, bottom radius), kladné poloměry m. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |
| jolt_tapered_capsule_create_static | jolt_tapered_capsule_create_static(x = 0, y = 0, z = 0, height = 2, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. celková výška >2*max(top, bottom radius), kladné poloměry m. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |