Tapered Cylinder
Vytvoří válec nebo komolý kužel podél osy Z s nezávislým horním a spodním radiusem.
Je vhodný pro kužely, komolé kužely, zúžené sloupy, kola a další konvexní solids s kruhovými konci. Body origin je uprostřed celkové výšky. Podporuje Dynamic, Static a Kinematic.
Syntaxe#
jolt_tapered_cylinder_create_dynamic(x, y, z, height, top_radius, bottom_radius, options=undefined)
jolt_tapered_cylinder_create_static(x, y, z, height, top_radius, bottom_radius, options=undefined)
jolt_tapered_cylinder_create_kinematic(x, y, z, height, top_radius, bottom_radius, options=undefined)Argumenty#
| Argument | Typ | Popis |
|---|---|---|
| x, y, z | Real | World-space střed/pivot. |
| height | Real | Konečná celá výška podél lokální Z > 0. |
| top_radius | Real | Konečný horní radius >= 0. |
| bottom_radius | Real | Konečný spodní radius >= 0. |
| options | Struct | Volitelné společné body options. |
Geometrie a orientace#
Spodní plocha leží v lokální Z=-height/2 a horní v +height/2. Wrapper předává half_height=height/2 a převádí native osu Y TaperedCylinderu na veřejnou Z ještě před body rotací.
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. Neplatná height, radiusy, pozice nebo options zruší vytvoření atomicky.
Reusable JoltShape#
var shape = jolt_shape_tapered_cylinder(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);jolt_shape_load() přijímá také platný TaperedCylinder .jcol asset.
Low-Level / Advanced API#
Přímý ergonomický low-level GML creator neexistuje. Použijte high-level funkce nebo reusable shape resource.
Příklad#
// Kužel mířící k lokální +Z.
var cone = jolt_tapered_cylinder_create_dynamic(2, 0, 5, 3, 0, 0.85, {
mass: 2,
friction: 0.6
});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_cylinder_create_dynamic | jolt_tapered_cylinder_create_dynamic(x = 0, y = 0, z = 0, height = 1, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. výška>0 m, poloměry>=0, alespoň jeden>0. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |
| jolt_tapered_cylinder_create_kinematic | jolt_tapered_cylinder_create_kinematic(x = 0, y = 0, z = 0, height = 1, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. výška>0 m, poloměry>=0, alespoň jeden>0. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |
| jolt_tapered_cylinder_create_static | jolt_tapered_cylinder_create_static(x = 0, y = 0, z = 0, height = 1, top_radius = 0.25, bottom_radius = 0.5, options = undefined) | Factory odpovídajícího motion type, pozice XYZ default 0 m a options. výška>0 m, poloměry>=0, alespoň jeden>0. Vrací JoltBody/undefined; chyba options uklidí nově vytvořené těleso. Konečné rozměry, změny přes set_ zachovají identitu. |