‹›
Constraints

Přehled constraintů

Vybírá a spravuje native Jolt solver vztahy mezi tělesy nebo mezi jedním tělesem a pevným světem.

Constraint odebírá nebo řídí relativní stupně volnosti. Vyberte nejužší typ odpovídající mechanismu: jednodušší constraint se snáze nastavuje, vysvětluje a ladí než plně obecný SixDOF joint.

Výběr constraintu#

TypPovolený relativní pohybLimity / pohonWorld varianta
FixedŽádný; zachová celý relativní transformBez limitů a motoruAno
PointVeškerá rotace kolem jednoho shared pointBez angular limits a motoruAno
DistanceVolná orientace uvnitř length rangeMin/max distance a pružinaAno
HingeJedna rotační osaAngular limits, torque motor a pružinaAno
SliderJedna lineární osaLineární limity, force motor a pružinaAno
ConeKruhový omezený swing a volný twistJediný swing half-angleAno
SwingTwistEliptický swing a omezený twistFriction a samostatné swing/twist motoryNe
SixDOFKaždá osa může být fixed, free nebo limitedPer-axis friction, limity a motoryNe
PulleyDvě délky spojené přes ratioCelkový length rangeNe
PathPohyb po Hermite curvePath motor, friction a rotation modesSamostatná sekce Paths

Public creatory#

FactoryPoužití
jolt_fixedArgumenty určuje reference konkrétního kloubu.
jolt_pointArgumenty určuje reference konkrétního kloubu.
jolt_distanceArgumenty určuje reference konkrétního kloubu.
jolt_hingeArgumenty určuje reference konkrétního kloubu.
jolt_sliderArgumenty určuje reference konkrétního kloubu.
jolt_coneArgumenty určuje reference konkrétního kloubu.
jolt_swing_twistArgumenty určuje reference konkrétního kloubu.
jolt_sixdofArgumenty určuje reference konkrétního kloubu.
jolt_pulleyArgumenty určuje reference konkrétního kloubu.
jolt_pathArgumenty určuje reference konkrétního kloubu.

Společný creation kontrakt#

  • Managed creatory vyžadují jolt_start() a resources patřící jeho aktivnímu default worldu.
  • Body-to-body creatory potřebují dvě různá živá JoltBody ve stejném worldu.
  • Podporované jsou static-dynamic, kinematic-dynamic a dynamic-dynamic mechanismy; nepodporovaná static-static konfigurace selže.
  • Creator vrací JoltConstraint nebo undefined. jolt_get_error() poskytne code, message a context.
  • Public positions, anchors a běžné axes jsou pravotočivé world-space X/Y/Z se Z nahoru, pokud stránka výslovně neuvádí COM-local nebo constraint-space data.

Společné runtime rozhraní#

MetodaVýznam
is_valid()Ověří wrapper, managed world a native generační handle.
get_native_handle()Vrátí opaque handle pro diagnostiku/advanced interop, nebo 0 při neplatnosti.
destroy()Idempotentně odstraní pouze tento constraint.
set_enabled() / get_enabled()Dočasně mění účast v solveru.
set_collision_enabled() / get_collision_enabled()Řídí collision připojené dvojice uživatelských těles.

Collision policy#

Klasické body-to-body constrainty mají collision defaultně true. SwingTwist a SixDOF ji mají defaultně false. Vypnutí ovlivní pouze danou dvojici a při více constrainteh je reference-counted. World varianty nemají druhé uživatelské těleso a vždy vracejí false.

Update a cleanup order#

GML
jolt_start();
// Create bodies and constraints.

// Step event:
jolt_update();

// Cleanup when needed:
joint.destroy();
body_a.destroy();
body_b.destroy();
jolt_stop();

Debug drawing#

GML
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_CONSTRAINTS, true);

// Draw End, after opaque scene geometry:
jolt_debug_draw();

Constraint debug layer zobrazuje live anchors, frames, limity, motory a type-specific solver geometry. Stav simulace nijak nemění.