ice_material = NewtonCreateMaterial (); water_material = NewtonCreateMaterial (); tyre_material = NewtonCreateMaterial (); // hiermit erstellt Newton Ihr Material Da wir bis jetzt kaum verschiedene Physikobjekte in unserem Level haben, bis auf unser Auto natürlich, reicht es erstmal die Eigenschaften zwischen unserem Material und der Levelgeometrie festzulegen. Schreiben Sie die folgenden Zeilen in die NewtonSetupSystem() Funktion, ich werde deren Bedeutung gleich erklären. NewtonMaterialSetFriction (ground_material, tyre_material, 1.0, 0.9); NewtonMaterialSetElasticity (ground_material, tyre_material, 0.7); NewtonMaterialSetDepthRecover (ground_material, tyre_material, 0.2); NewtonMaterialSetSoundEffect (ice_material, wood_material, hit); • Friction - Als erstes haben wir die Reibung angegeben (statisch und kinetisch) und da Reifen ja nicht besonders gut rutschen (so soll es auch sein ;), hab ich hier besonders hohe Werte genommen. • Elasticity – Dieser Wert gibt an, wie stark die beiden Körper voneinander abprallen, wobei er für Reifen sogar noch etwas höher sein könnte. Ein Formel1-Reifen der mitten in der Fahrt vom Fahrzeug getrennt wird ist quasi nicht zu stoppen – glauben Sie mir! • DepthRecover - Hier bin ich mir nicht ganz sicher. Scheinbar wird hier angegeben, wie schnell das gegenseitige Durchdringen zweier Objekte wieder gelöst wird. • SoundEffect – Definieren Sie eine Sound-Datei, die jedesmal abgespielt wird, wenn beide Gegenstände aufeinander prallen. Ihr Material ist bereits voll funktionsfähig, eine Kleinigkeit fehlt aber noch um es in WED auch zuweisen zu können. Alle die sich etwas auskennen, haben sicherlich bemerkt, dass wir noch eine Aktion für unser Material brauchen, also legen wir dieses gleich unter den anderen Material- Aktionen an. action NewtonIceEntity { } NewtonCreateGravityEntity (ice_material); // uses mass, linear_drag, angular_drag_x, angular_drag_y, angular_drag_z, health, shape_factor, collision_groupId, collision_sph_box, start_active, compound_collision, destructible, spawn_children; action NewtonTyreEntity { } NewtonCreateGravityEntity (tyre_material); Das war’s schon. Der Kommentar über unserem Code ist übrigens nicht nur informativ, sondern auch überaus praktisch, denn die Werte unseres Materials würden ohne diesen Kommentar in WED statt Mass, Health usw. nur Skill1, Skill2 usw. heißen und das ist sehr unübersichtlich. Schauen Sie es sich am besten gleich selber an, indem Sie nun endlich den Reifenstapel in unser Level einbringen. Wechseln Sie zu WED, klicken Object -> Add Model und wählen aus dem Ordner models\ das Modell rue_360_d.mdl. Fügen Sie noch drei weitere Reifenmodelle ein und platzieren Sie diese zu einem Stapel, der irgendwo in unserem Raum auf dem Boden steht. <strong>3D</strong> <strong>GAMESTUDIO</strong>-<strong>Magazin</strong> ■ <strong>Ausgabe</strong> <strong>01</strong> | <strong>Oktober</strong> 2005 │26
Weisen Sie jedem dieser Reifen die Aktion NewtonTyreEntity zu – das hatten Sie vorher schon bei der Karosserie und den Autoreifen gemacht – und ändern Sie den Wert Mass auf 20. Wenn Sie fertig sind, dann speichern und kompilieren Sie Ihr Level und starten es anschließend. Der Reifenstapel sollte jetzt in Ihrem Raum stehen und auf Kollision mit Ihrem Wagen reagieren. Falls Ihnen einige Eigenschaften nicht zusagen sollten, dann wissen Sie ja wo diese geändert werden können. <strong>3D</strong> <strong>GAMESTUDIO</strong>-<strong>Magazin</strong> ■ <strong>Ausgabe</strong> <strong>01</strong> | <strong>Oktober</strong> 2005 │27