‹›
Pomocné skripty · Sockets

Typy výsledného spojení

Jeden matching a attraction postup může vytvořit čtyři rozdílné fyzikální constrainty.

connection_type a jeho parametry patří male socketu. Female poskytuje cílový anchor a world frame. Po vytvoření constraintu attraction přestane působit.

Přehled#

connection_typeVýsledný constraintPovolený pohyb
fixedjolt_fixedŽádný relativní posun ani rotace.
hingejolt_hingeRotace pouze kolem jedné osy, volitelně s limity.
pointjolt_pointSpolečný kotevní bod a volná relativní rotace ve všech osách.
swing_twistjolt_swing_twistSpolečný bod s omezeným swing kuželem a twist rozsahem.

Fixed#

Defaultní recept. Vytvoří body-to-body Fixed constraint v přesně dorovnané relativní transformaci. Hodí se pro panely, nástroje v držáku, víka a pevné moduly.

GML
jolt_socket(part, "male", "mount", {
    connection_type: "fixed",
    collision: false
});

Hinge#

GML
var wheel_socket = jolt_socket(wheel, "male", "axle", {
    connection_type: "hinge",
    hinge_axis: { x: 0, y: 0, z: 1 },
    hinge_limits_min: -180,
    hinge_limits_max: 180,
    attraction: true,
    collision: false
});

var axle_socket = jolt_socket(axle, "female", "axle");
  • hinge_axis je normalizovaná osa v local frame female socketu; default {0,0,1}.
  • hinge_limits_min má rozsah -180..0 a default -180. hinge_limits_max má rozsah 0..180 a default 180.
  • Anchor je aktuální world position female socketu při spojení. Rotovaný parent i local socket rotation osu správně přenesou do world space.

Point#

GML
jolt_socket(ball, "male", "rope_end", {
    connection_type: "point",
    attraction: true,
    collision: false
});

Obě bodies sdílejí world position female socketu jako anchor, ale constraint neomezuje jejich relativní rotaci. Point podporuje max_force, nikoli max_torque, protože neřeší žádný rotační stupeň volnosti.

SwingTwist#

GML
var arm_socket = jolt_socket(arm, "male", "shoulder", {
    connection_type: "swing_twist",
    twist_axis: { x: 0, y: 0, z: 1 },
    plane_axis: { x: 1, y: 0, z: 0 },
    normal_half_angle: 25,
    plane_half_angle: 45,
    twist_min: -20,
    twist_max: 30,
    attraction: true,
    collision: false
});
  • twist_axis a plane_axis jsou dvě neparalelní osy ve female socket frame; defaulty jsou +Z a +X.
  • normal_half_angle a plane_half_angle 0..180 určují eliptický swing kužel. swing_angle default 45 slouží jako společný fallback.
  • twist_min a twist_max určují podepsaný rozsah -180..180 a musí být seřazené; default -30..30.
  • Současný Socket recept je bez motoru, spring a friction nastavení.