‹›
Aktuální projekt

Ovládání prvků myší

Obsluhujte všech devět typů bez změny limitů, pružin, odporu, zarážek nebo motorů. Síly/momenty působí před pevnými kroky fyziky; dynamické uchycení dostává reakci.

Příklad#

GML
interaction = jolt_control_interaction();
interaction.set_camera(o_control_bbmod_camera);
interaction.set_carry(carry);
interaction.set_distance(3);
interaction.set_sensitivity(0.35);
interaction.set_max_force(200);
interaction.set_max_torque(20);
// End Step:
if (!interaction.update_controls()) carry.update_controls();

Použití a omezení#

Kamera musí ve Step před mouse-look testovat interaction.controls_use_mouse(id). Při držení předmětu má Carry přednost. První zásah zachytí prvek; vyjetí paprsku mimo něj nepustí. Uvolnění tlačítka, ztráta fokusu, vzdálení, zámek, zničení nebo zastaralý vstup pustí; nový úchop vyžaduje nový klik.

Button standardně používá podržení; set_button_mode("drag") volí promítnutou osu. Lever, Pedal, Slider a Pull Handle používají viditelný směr pohybu. Knob a Hand Wheel zachovají počáteční směr otáčení; Crank sleduje měnící se tečnu a potřebuje krouživý pohyb. Joystick promítá dvě osy uvnitř fyzikálního kuželu. Při pohledu podél dráhy posuvníku/úchytu přistupte šikmo.

Pro vlastní vstup použijte jolt_control_interaction_frame(origin,forward,up), begin_from_hit(hit,frame) a update_drag(frame,dx,dy,held,dt_seconds) s čerstvým celým výsledkem raycastu. Zajistěte filtry a nespouštějte současně automatický adaptér. V Clean Up interakci zrušte.

Přehled API#

Signatury veřejných funkcí a metod. Metody volejte na vrácené instanci; parametry s výchozí hodnotou jsou volitelné.

Související návody#

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íkSignaturaKontrakt operace
jolt_control_interactionjolt_control_interaction()Vyžaduje spuštěný svět; JoltControlInteraction nebo undefined. Default enabledtrue, distance3m, sensitivity.35, max_force200N, max_torque20N·m, max_lead15°, levé tlačítko, režim press.
jolt_control_interaction_framejolt_control_interaction_frame(origin,forward,up)Světový origin + nenulové nezávislé forward/up structy XYZ; vrací ortonormální {origin, forward, right, up}, chyba undefined.
JoltControlInteraction.begin_from_hitJoltControlInteraction.begin_from_hit(hit,frame)Čerstvý raycast hit + frame → Boolean. Ověří dosah, podporovaný nezamčený control stejného světa a jediného vlastníka; u nepromítnutelné osy může odmítnout.
JoltControlInteraction.controls_use_mouseJoltControlInteraction.controls_use_mouse(view)V Camera Step před změnou yaw/pitch; Boolean, zda klik/drag patří tomuto controlu. Může začít interakci z nového kliknutí.
JoltControlInteraction.destroyJoltControlInteraction.destroy()Vrací true; uvolní vlastnictví interakce, destroy navíc zneplatní controller. Nezničí mechanismus.
JoltControlInteraction.get_controlJoltControlInteraction.get_control()is_active Boolean, při ztrátě platnosti pustí; get_control aktivní JoltControl nebo undefined, nevlastněný.
JoltControlInteraction.is_activeJoltControlInteraction.is_active()is_active Boolean, při ztrátě platnosti pustí; get_control aktivní JoltControl nebo undefined, nevlastněný.
JoltControlInteraction.releaseJoltControlInteraction.release()Vrací true; uvolní vlastnictví interakce, destroy navíc zneplatní controller. Nezničí mechanismus.
JoltControlInteraction.set_buttonJoltControlInteraction.set_button(v)Boolean úspěchu. enabled Boolean (false pustí), mode press/drag (pustí), button celé0..5 (0 vypne, změna pustí).
JoltControlInteraction.set_button_modeJoltControlInteraction.set_button_mode(v)Boolean úspěchu. enabled Boolean (false pustí), mode press/drag (pustí), button celé0..5 (0 vypne, změna pustí).
JoltControlInteraction.set_cameraJoltControlInteraction.set_camera(v)Boolean; carry stejného světa s is_holding nebo undefined; kamera objekt/instance/undefined. Změna pustí interaction. Aktivně držící carry blokuje interakci.
JoltControlInteraction.set_carryJoltControlInteraction.set_carry(v)Boolean; carry stejného světa s is_holding nebo undefined; kamera objekt/instance/undefined. Změna pustí interaction. Aktivně držící carry blokuje interakci.
JoltControlInteraction.set_distanceJoltControlInteraction.set_distance(v)Boolean; konečné rozsahy dle metody: .05..100 m, .001..10 citlivost, 0..100000 N, 0..100000 N·m, 1..45°.
JoltControlInteraction.set_enabledJoltControlInteraction.set_enabled(v)Boolean úspěchu. enabled Boolean (false pustí), mode press/drag (pustí), button celé0..5 (0 vypne, změna pustí).
JoltControlInteraction.set_max_forceJoltControlInteraction.set_max_force(v)Boolean; konečné rozsahy dle metody: .05..100 m, .001..10 citlivost, 0..100000 N, 0..100000 N·m, 1..45°.
JoltControlInteraction.set_max_leadJoltControlInteraction.set_max_lead(v)Boolean; konečné rozsahy dle metody: .05..100 m, .001..10 citlivost, 0..100000 N, 0..100000 N·m, 1..45°.
JoltControlInteraction.set_max_torqueJoltControlInteraction.set_max_torque(v)Boolean; konečné rozsahy dle metody: .05..100 m, .001..10 citlivost, 0..100000 N, 0..100000 N·m, 1..45°.
JoltControlInteraction.set_sensitivityJoltControlInteraction.set_sensitivity(v)Boolean; konečné rozsahy dle metody: .05..100 m, .001..10 citlivost, 0..100000 N, 0..100000 N·m, 1..45°.
JoltControlInteraction.update_controlsJoltControlInteraction.update_controls()Jednou po kameře; vrací, zda tento klik/držení spotřeboval Control, aby Carry přeskočil stejný vstup. Není to prostý is_active ani potvrzení pohybu.
JoltControlInteraction.update_dragJoltControlInteraction.update_drag(frame,dx,dy,held,dt=0.016666667)Frame, dx/dy pixely, held, dt>0 s (default 1/60). Boolean; held=false, neplatná geometrie či vzdálení pustí. Pouze fyzikální síly při následném kroku, žádné zápisy pose.