Vytvoření vozidla
Vytvoří managed draft vozidla nad platným Dynamic chassis a vrátí JoltVehicle nebo undefined.
Při vytvoření se vybírá collision tester a globální limity orientace. Kola a pohon se konfigurují na vráceném draftu před build().
Syntaxe#
jolt_vehicle(chassis, options=undefined)Argumenty#
| Argument | Typ | Popis |
|---|---|---|
| chassis | JoltBody | Živé Dynamic těleso bez sensor režimu v managed worldu. |
| options | Struct nebo undefined | Volitelná konfigurace kolizí, orientace, motoru a převodovky. |
Volby vozidla#
| Pole | Default | Pravidla / účel |
|---|---|---|
| collision | JOLT_VEHICLE_COLLISION_RAY | Konstanta Ray, Sphere nebo Cylinder testeru. |
| collision_radius | 0.05 | Konečný kladný radius používaný Sphere testerem. |
| maximum_slope_angle | 80 | Konečné stupně větší než 0 a menší než 90. |
| maximum_pitch_roll_angle | 180 | Konečné stupně větší než 0 a nejvýše 180. |
| engine | undefined | Volitelné nastavení popsané na stránce Motor. |
| transmission | undefined | Volitelný režim, časování a převodové poměry. |
Návratová hodnota#
Při úspěchu vrací draft JoltVehicle. Neplatné chassis nebo nastavení vrátí undefined a nastaví high-level chybu.
Kontrakt build()#
- Před build() přidejte 2 až 32 kol.
- Označte alespoň jedno kolo jako driven nebo přidejte explicitní diferenciál.
- Diferenciály a stabilizátory přidávejte před build().
- Managed build() je idempotentní: další volání po úspěchu vrátí true.
- Runtime ovládání a gettery vyžadují úspěšně sestavené vozidlo.
var car = jolt_vehicle(chassis, {
collision: JOLT_VEHICLE_COLLISION_SPHERE,
collision_radius: 0.08,
maximum_slope_angle: 55,
maximum_pitch_roll_angle: 75
});
if (is_undefined(car)) {
var error = jolt_get_error();
show_debug_message(error.context + ": " + error.message);
}Konfigurační objekt a settery#
var settings = jolt_vehicle_settings();
settings.set_collision(JOLT_VEHICLE_COLLISION_SPHERE);
settings.set_collision_radius(0.08);
var car = jolt_vehicle(chassis, settings);Konfigurační factories vracejí GML objekt nastavení; samy nevytvářejí fyziku. Jejich settery vracejí self, tedy tento objekt, a nejsou potvrzením platnosti hodnoty. Pole se spotřebují a ověří při jolt_vehicle, add_wheel nebo add_differential. Vynechané pole zachová default odpovídajícího options zápisu uvedený výše. Změna nastavení po jeho použití nemění existující vozidlo, kolo ani diferenciál. Nastavení nepotřebuje destroy.
Vozidlo při chybě vytvoření vrací undefined. add_differential vrací Boolean; add_wheel vrací číselný index začínající nulou, nebo Boolean false při chybě. Index 0 je úspěch: nepoužívej pouze if (!wheel_index). Konfiguraci kol a diferenciálů dokonči před build().
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ík | Signatura | Kontrakt operace |
|---|---|---|
| jolt_vehicle | jolt_vehicle(chassis, options = undefined) | Živý nesenzorový Dynamic podvozek + volitelné options/settings. Vrací JoltVehicle nebo undefined; podvozek nevlastní. Přidej kola a zavolej build. Chyba engine/transmission zničí rozpracovaný Vehicle, nikoliv podvozek. |
| jolt_vehicle_settings | jolt_vehicle_settings() | Vytvoří prázdný settings objekt. Nevyžaduje svět, nevytváří fyziku; settery vrací self. Vynechané vlastnosti přenechá defaultům při jolt_vehicle. |
| JoltVehicle.build | JoltVehicle.build() | Boolean; finalizuje 2–32 kol nad Dynamic podvozkem. Opakované volání po úspěchu true; po build nelze měnit konstrukci kol. |
| JoltVehicleSettings.set_collision | JoltVehicleSettings.set_collision(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Režim JOLT_VEHICLE_COLLISION_RAY/SPHERE/CYLINDER; výchozí RAY. |
| JoltVehicleSettings.set_collision_radius | JoltVehicleSettings.set_collision_radius(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Poloměr testu v m, výchozí 0.05; kladný konečný. |
| JoltVehicleSettings.set_engine | JoltVehicleSettings.set_engine(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příslušný settings objekt nebo options struct; žádný běžící motor/převodovku tím nemění. |
| JoltVehicleSettings.set_maximum_pitch_roll_angle | JoltVehicleSettings.set_maximum_pitch_roll_angle(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Úhly ve stupních; výchozí slope 80°, pitch/roll 180°. |
| JoltVehicleSettings.set_maximum_slope_angle | JoltVehicleSettings.set_maximum_slope_angle(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Úhly ve stupních; výchozí slope 80°, pitch/roll 180°. |
| JoltVehicleSettings.set_transmission | JoltVehicleSettings.set_transmission(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Příslušný settings objekt nebo options struct; žádný běžící motor/převodovku tím nemění. |