‹›
Vehicles

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#

Syntax
jolt_vehicle(chassis, options=undefined)

Argumenty#

ArgumentTypPopis
chassisJoltBodyŽivé Dynamic těleso bez sensor režimu v managed worldu.
optionsStruct nebo undefinedVolitelná konfigurace kolizí, orientace, motoru a převodovky.

Volby vozidla#

PoleDefaultPravidla / účel
collisionJOLT_VEHICLE_COLLISION_RAYKonstanta Ray, Sphere nebo Cylinder testeru.
collision_radius0.05Konečný kladný radius používaný Sphere testerem.
maximum_slope_angle80Konečné stupně větší než 0 a menší než 90.
maximum_pitch_roll_angle180Konečné stupně větší než 0 a nejvýše 180.
engineundefinedVolitelné nastavení popsané na stránce Motor.
transmissionundefinedVolitelný 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.
GML
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#

GML
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íkSignaturaKontrakt operace
jolt_vehiclejolt_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_settingsjolt_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.buildJoltVehicle.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_collisionJoltVehicleSettings.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_radiusJoltVehicleSettings.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_engineJoltVehicleSettings.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_angleJoltVehicleSettings.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_angleJoltVehicleSettings.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_transmissionJoltVehicleSettings.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í.