‹›
Úvod

Souřadnicový systém

Definuje positions, directions, rotations a units veřejného API.

JoltPhysics používá pravotočivý Z-up veřejný souřadnicový systém. Současné native mapování je záměrně identity mapping, takže veřejné X, Y a Z procházejí Jolt bridge bez prohození os.

Osy#

OsaVýznam
XVlevo / vpravo
YVpřed / vzad
ZNahoru / dolů; kladné Z míří nahoru
GML
// Deset jednotek nad originem.
var body = jolt_box_create_dynamic(0, 0, 10, 1, 1, 1);

// World-space impulse směrem vzhůru.
body.add_impulse(0, 0, 5);

Coordinate spaces#

HodnotaProstor
Body position a transformWorld space
Linear a angular velocityWorld space
Forces a impulsesWorld space
Bod add_force_local / add_impulse_localBody-local point; vector zůstává world-space
Compound child transformLocal vůči compound
Contact position a normalWorld space
Raycast endpoints a resultsWorld space

Jednotky#

Engine neurčuje pojmenovanou distance unit, ale konzistentní real-world scale přináší nejlepší výsledky. Doporučená konvence jsou metry pro distance, kilogramy pro mass a sekundy pro time. Default gravity -9.81 na Z pak přibližně odpovídá zemské gravitaci, pokud jedna world unit znamená jeden metr.

Úhly a rotace#

  • Kanonickou rotací je normalizovaný quaternion {x,y,z,w}.
  • Funkce explicitně označené Euler používají stupně.
  • Euler conversion skládá q = qZ × qY × qX: veřejné X, poté Y a nakonec Z.
  • Angular velocity používá radiány za sekundu, nikoli stupně za sekundu.
  • World-space surface normals a direction vectors používají stejné pravotočivé osy.

Rozměry#

High-level primitive creators používají celé veřejné dimensions. Například jolt_box_create_dynamic(x,y,z,width,depth,height) přijímá celkovou velikost, zatímco low-level native Box API pracuje s half extents. Capsule a Cylinder creators dokumentují vlastní pravidla pro full height.

Příklad mapování z 2D room#

GML
// Pouze ukázková policy: room X -> physics X,
// obrácené room Y -> physics Z, pevná hloubka -> physics Y.
var physics_x = x * scale;
var physics_y = 0;
var physics_z = -y * scale;

Správný mapping závisí na camera a hře. Conversion udržujte v jednom helperu, místo abyste screen-space a physics-space hodnoty míchali napříč gameplay kódem.