car.c A8

Das Hauptskript der Physik für Bodenfahrzeuge wie Autos und Luftkissenfahrzeuge, wird auch von den Auto-Templates verwendet. Das Skript enthält eine StartUp-Funktion, die die PhysX-Engine aktiviert und richet ein Default-Setting für Rennspiele ein. Durch Hinzufügen des Auto-Templates (t_car.h) wird das Skript automatisch eingebunden (includet) und sämtliche Default-Parameter lassen sich in diesem Template anpassen.

Global parameters

Parameter Default Bemerkungen
tcar_gravity
50
Faktor der Gravitation
tcar_facBrake
4
Stärke der Bremskraft des Autos in einem Vilefachen der Motorkraft des Autos (car_maxTorque)
tcar_facSteer
2
Lenkwinkel, vergrössert sich in Grad pro Tick.
tcar_dampSteer
80
Verringerung des Lenkwinkels bei hoher Geschwindigkeit in Prozent.
tcar_crashSpeed
20
Crash-Geschwindigkeit; spielt, wenn oberhalb dieser Geschwindigkeit (km/h) abrupt gestoppt wird, einen Crash-Sound.
 
 
engine_wav
"engine.ogg"
Motorengeräusch, in Schleife abspielbar.
tires_wav
"tires.wav"
Quietschgeräusch der Reifen, in Schleife abspielbar.
crash_wav
"crash.ogg"
Crash-Sound.
horn_wav
"horn.wav"
Hupsound, in Schleife abspielbar.
 
 
key_forward
"cuu"
Beschleuniger.
key_backward
"cud"
Beschleuniger, Rückwärtsgang.
key_left
"cul"
Lenkt nach links.
key_right
"cur"
Lenkt nach rechts.
key_brake
"space"
Vollbremsung.
key_horn
"h"
Hupen..
key_lift
"l"
Aufwärtskick zum Aufstellen eines umgekippten Autos.

car_player()

Physik-Auto-Aktion. Fügt dem Auto 4 Räder hinzu und initiiert die Auto-Physik, die von Tastatur und Joystick gesteuert wird. Weisen Sie diese Aktion in WED dem Playerauto zu oder Sie setzen - für ein per Skript erstelltes Auto - die Skills wie unten beschrieben und rufen Sie die Aktion auf. Ist ein Skill 0, wird dessen Defaultwert benutzt. Die Parameter erlauben es, ein recht realistisches Fahrverhalten zu erstellen, das besser ist als die ODE-Autophysik aus A6/A7.

Parameter

Skill/Flag Name Default Bemerkungen
FLAG1 car_hover 0 Setzen Sie dieses Flag für ein Luftkissenfahrzeug (unsichtbare Räder).
skill1 car_maxSpeed 200

Maximalgeschwindigkeit des Autos in km/h auf ebener Straße. Sobald das Auto an diese Geschwindigkeit herankommt, wird das Drehmoment des Motors automatisch reduziert. Das Auto kann diese Geschwindigkeit ein wenig überschreiten wenn es bergab fährt oder starken Rückenwind hat.

skill2..4 car_wheel_fx/y/z 40,20,-14

Offset der Vorderräder vom Zentrum des Autos aus. Wird mit der Skalierung des Autos skaliert.

skill5..7 car_wheel_rx/y/z -34,20,-14 Offset der Hinterräder vom Zentrum des Autos aus.Wird mit der Skalierung des Autos skaliert.
skill8 car_wheelDrive 1 1 = Hinterradantrieb, 2 = Vorderradantrieb, 3 = 4-Radantrieb.
skill9 car_maxTorque 1000

Motorstärke. Maximales Drehmoment, das auf die angetriebenen Räder wirkt (wird bei Höchstgeschwindigkeit automatisch verringert).

skill10 car_maxSteer 40 Maximaler Lenkwinkel, der den Wendekreis bestimmt (wird bei Höchstgeschwindigkeit automatisch verringert).
skill11 car_massFactor 100 Massefaktor des Autos - multipliziert die Masse des Autovolumens mit dem gegebenen Prozentsatz.
skill12 car_massOffset -100 Masseoffset des Autos - vertikaler Offset des Massezentrums in Prozent. Platzieren Sie das Zentrum tief, damit das Auto in schnellen Kurven nicht umkippt.
skill13 car_massShape 100

Masseform des Autos - X-Komponente des Trägheitstensors. Diese bestimmt die Trägheit für die Rotation über die Längsachse des Autos. Für langgezogenen Autos (wie Dragster) halten Sie diesen Skill klein, für weniger Kippen eher hoch.

skill14 car_spsSpring 300 Element der Federungsaufhängung - stellen Sie die Steifigkeit der Federung passend zum Gewicht des Autos ein.
skill15 car_spsDamper 100 Element der Stoßdämpferaufhängung - zum Verringern der Holprigkeit erhöhen Sie diesen Skill.
skill16 car_spsWay 10 Aufhängungsweg in Quants - erhöhen Sie diesen Wert für große Räder oder Monster-Trucks.
skill18 car_frictionWheel 100

Längsreibung der Räder - Reibungsfaktor in Vorwärtsrichtung, die sich auf Beschleunigen und Bremsen auswirkt.

skill19 car_frictionLatF 200

Seitliche Reibung der Vorderräder - der seitliche Reibungsfaktor wirkt sich auf das Lenken aus.

skill20 car_frictionLatR 200 Seitliche Reibung der Hinterräder - der seitliche Reibungsfaktor wirkt sich auf das Schleudern in Kurven aus.
       
skill61 car_torque  

Gegenwärtige Motorkraft (kann durch eine externe AI-Funktion gesetzt werden und wird bei Höchstgeschwindigkeit automatisch verringert).

skill62 car_brake  

Gegenwärtige Bremskraft (kann durch eine externe AI-Funktion gesetzt werden und wird automatisch angewendet wenn das Autor vorwärts rollt und der Rückwärtsgang eingelegt wird).

skill63 car_steerangle   Gegenwärtiger Lenkwinkel (kann durch eine externe AI-Funktion gesetzt werden und wird bei Höchstgeschwindigkeit automatisch verringert).
skill66 actor_id   Einzigartige Nummer zum Identifizieren der Entity (1357 == car)
skill71 car_speed   Gegenwärtige Geschwindigkeit des Autos in km/h. Läßt sich von externen Funktionen lesen, beispielsweise vom Tacho int_car_props.c.
skill75 car_wheelFL  

Pointer der Entity des linken Vorderrads. Das läßt sich für Effekte verwenden oder zum individuellen Einstellen der Bodenreibung.

skill76 car_wheelFR   Pointer der Entity des rechten Vorderrads.
skill77 car_wheelRL   Pointer der Entity des linken Hinterrads.
skill78 car_wheelRR   Pointer der Entity des rechten Hinterrads.

Bemerkungen

Beispiel:

action vehicle1()
{
  my.flags |= SHADOW;
  my.car_maxSpeed = 80;
  my.car_maxTorque = 500;
  my.car_spsSpring = 150; 
  my.car_spsDamper = 30; 
  my.car_massOffset = -60; 
  my.car_frictionLatR = 150;
// wheel positions can be determined from the MED status line: 
  my.car_wheel_fx = 23.5; 
  my.car_wheel_rx = -26; 
  my.car_wheel_fy = 21; 
  my.car_wheel_ry = 21; 
  my.car_wheel_fz = -10;
  my.car_wheel_rz = -11;
  my.car_spsWay = 7; // for suspension animation
  car_player();
}

car_init()

Initialisiert die my-Entity als Auto, fügt 4 Räder hinzu und setzt die Autoparameter wie oben beschrieben. Zum Laden des Radmodells fügt die Funktion "_wheel" an den Autonamen an (z. B. "bmw_wheel.mdl" wenn das Auto ein "bmw.mdl" ist). Wird das bestimmte Rad nicht gefunden, wird ein generelles "wheel.mdl" benutzt, wird auch dieses nicht gefunden, errscheint eine Fehlermeldung.

car_input(ENTITY* car)

Nimmt eine Auto-Entity als Parameter und setzt seine Parameter car_torque, car_brake, und car_steerangle für Joystick und Cursortasten. Ausserdem wird hiermit das Anstossen eines umgekippten Autos mit der [L]-Taste sowie das Hupen mit der [H]-Taste gehandhabt. Zum Steuern eines Autos, rufen Sie diese Funktion in einer while()-Schleife auf.

car_move(ENTITY* car)

Fährt ein Auto gemäß seiner gegenwärtigen Parmeter car_torque, car_brake, und car_steerangle. Um ein Auto zum Fahren zu bringen, rufen Sie diese Funktion in einer while()-Schleife auf.

car_animate(ENTITY* car)

Animiert Radaufhängung und Lenkung der Auto-Entity. Dazu muß Bones-Animation verwende werden. Die Aufhängungs-Szenen müssen nach dem Rad, das sie betreffen benannt werden: "frontright", "frontleft", "rearright" und "rearleft". Die Lenkszene muß "steering" heißen. Am Beginn der Animationen ist die Aufhängung komplett ausgedehnt und der Lenkwinkel absolut nach links. Um ein Auto zu animieren, rufen Sie diese Funktion in einer while()-Schleife auf.

car_noise(ENTITY* car, SOUND* sndEngine, SOUND* sndTire, SOUND* sndCrash )

Spielt je nach Geschwindigkeit, Drehmoment und Bremsung das Motor-, Rad-, und Crash-Geräusch ab. Um ein Auto zu fahren, rufen Sie diese Funktion in einer while()-Schleife auf.

pXent_getspeed(ENTITY*): var

Physik-Hilfsfunktion: liefert die Vorwärtskomponente der Geschwindigkeit der Entity in km/h-Einheiten zurück. Die Entity muss für Physik registriert sein.

Siehe auch:

car template, car_props.c, PhysX, pXcon_setwheel

► latest version online