Nechá CharacterVirtual sledovat úplný trojrozměrný transform rigid body pro sedadla, vozidla, výtahy a pohyblivé stroje.
JoltCharacter.attachment_attach() přepne existující managed postavu z nezávislého pohybu CharacterVirtual do režimu následování transformu. Zadaná position a rotation se uloží v local-space cílového tělesa. Každý fixed step z něj odvodí world position, orientaci, up vector a point velocity postavy, dokud ji neodpojíte nebo cílové těleso nezanikne.
// player je platný JoltCharacter; seat_body je platný JoltBody.if(keyboard_check_pressed(ord("E"))){if(!player.attachment_is_active()){if(!player.attachment_attach(seat_body,{position:{x:0,y:-0.7,z:1.2},rotation_euler:{x:0,y:0,z:180}})){show_debug_message(jolt_get_error().message);}}else{player.attachment_detach();}}// Pozici může převzít character.sync(); orientaci nastavte samostatně.player.sync();if(player.attachment_is_active()){varfacing=player.get_rotation_euler();character_object.rotation_x=facing.x;character_object.rotation_y=facing.y;character_object.rotation_z=facing.z;}
Postavu a rigid body vytvořte až po jolt_start() a v běžném Step toku volejte jolt_update(delta_time / 1000000).
Native attachment se po simulaci rigid bodies znovu načte, takže get_position(), get_rotation() a get_up() po jolt_update() zpřístupňují aktuální pose tělesa.
JoltCharacter.sync() kopíruje position a character state do propojené GameMaker instance, ale nenastavuje rotation modelu. Vizuální orientation nastavte samostatně pomocí get_rotation() nebo get_rotation_euler().
V attached stavu se nesnažte jako konkurenční autoritu používat set_position(), set_velocity(), chůzi, jump ani crouch.
attachment_detach() lze bezpečně volat i na odpojené postavě a vrátí true.
Aktuální world position zůstane zachovaná. Postava převezme point velocity tělesa v místě attachmentu, takže opuštění pohybujícího nebo rotujícího vozidla zachová fyzikálně odpovídající momentum.
Běžný controller používá globální Z-up. Při odpojení implementace v možné míře zachová heading a současně narovná nakloněného nebo obráceného pasažéra zpět k Z-up.
Jump a forced-jump state se vyčistí. Pro další physics stepy se obnoví běžná registrace character collisions.
Postava cílové body nevlastní. Odpojení ani zničení postavy těleso nezničí.
Zničení cílového tělesa automaticky odpojí všechny připnuté postavy ještě před zastaráním jeho generačního handlu.
Automatické odpojení zachová poslední position postavy; při běžném zničení cíle se podle dostupnosti převede také jeho aktuální point velocity.
Stale body wrapper, těleso z jiného worldu nebo neplatná postava se odmítnou. Opětovné použití slotu handlu nemůže postavu tiše připnout k jinému pozdějšímu body.
jolt_stop() oba resources uklidí běžným managed teardownem; jejich metody potom nevolejte.
Offset sedadla zadávejte relativně k veřejnému transform origin tělesa. U bodies s center-of-mass offsetem jde stále o vystavený body transform, nikoli o libovolný world point.
Začněte s identity rotation a upravujte vždy jednu Euler osu. Snadněji tak odhalíte rozdíl ve směru modelu.
Pokud je postava na správném místě jen do chvíle, než vozidlo zatočí, byla pravděpodobně zadána world-space souřadnice místo body-local position.
Pro logiku vstupu do nejbližšího sedadla převádějte nebo předem definujte každé sedadlo v local-space; nepřepisujte attachment pose každým framem z world coordinates.
Postava i cíl musí být platné managed resources ve stejném worldu.
options.position musí obsahovat konečné hodnoty x, y a z.
Pokud chybí rotation, options.rotation_euler musí obsahovat konečné stupně x, y a z.
options.rotation musí obsahovat konečné x, y, z a w a nesmí mít téměř nulovou délku.
attachment_attach(), attachment_detach() a stav měnící metody při chybě vrací false. jolt_get_error() přečtěte ihned, než diagnostiku nahradí další Jolt volání.
Metoda byla zavolána globálně. Použijte player.attachment_attach(body, options) na JoltCharacter.
Pasažér obíhá kolem špatného bodu
position obsahuje world coordinates. Zadejte offset v local-space tělesa.
Position se mění, ale model zůstává vzpřímený
sync() nezapisuje visual rotation. Aplikujte get_rotation() nebo get_rotation_euler() na renderovanou instanci či model.
Hráč nemůže chodit ani skákat
Během full attachmentu jde o záměr. Nejprve jej odpojte, nebo pro pochozí pohyblivou geometrii použijte reference frame.
Hráč po výstupu prudce odletí
Převzatá point velocity je u rychle rotujícího attachmentu fyzikálně skutečná. Omezte angular speed vozidla nebo po odpojení použijte vlastní gameplay pravidlo.
Změna settings nemění již aktivní attachment; zavolej attachment_attach znovu. Settings settery vracejí self; attachment_attach vrací Boolean. Staré názvy attach_to_body, detach_from_body a is_attached nejsou aktuální metody.
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.
Vytvoří pouze nastavení, body volitelné (undefined); nevyžaduje svět, nevytváří fyziku. Vrací JoltCharacterAttachmentSettings, použij character.attachment_attach(settings).
Živý JoltBody stejného světa + options, nebo JoltCharacterAttachmentSettings. Boolean. Místní position default {0, 0, 0} m; rotation XYZW má přednost před rotation_euler XYZ° (default identity). Přepne na následování hosta, zruší reference frame a čekající skok; není samostatný chodící solver.
Vrací self, mění pouze nastavení pro příští attachment_attach. Position je místní v m; rotation očekává struct XYZW a kopíruje složky; Euler XYZ ve stupních zruší předchozí quaternion. Validace proběhne při attachment_attach, živý attachment se tím nepřenastaví.
Vrací self, mění pouze nastavení pro příští attachment_attach. Position je místní v m; rotation očekává struct XYZW a kopíruje složky; Euler XYZ ve stupních zruší předchozí quaternion. Validace proběhne při attachment_attach, živý attachment se tím nepřenastaví.
Vrací self, mění pouze nastavení pro příští attachment_attach. Position je místní v m; rotation očekává struct XYZW a kopíruje složky; Euler XYZ ve stupních zruší předchozí quaternion. Validace proběhne při attachment_attach, živý attachment se tím nepřenastaví.
Vrací self, mění pouze nastavení pro příští attachment_attach. Position je místní v m; rotation očekává struct XYZW a kopíruje složky; Euler XYZ ve stupních zruší předchozí quaternion. Validace proběhne při attachment_attach, živý attachment se tím nepřenastaví.