Anfang

 

 

 

Es macht große Mühe hunderte Sprites (in diesem Fall Bäume, Sträucher und Gras) auf dem Terrain auszurichten. Ich bekam den Tipp im Forum, im WED ein Script an die Sprites zu hängen. Darin wird mit Hilfe von TRACE  das Sprite auf das Terrain gesetzt.

 

Zuerst platziert ihr die Pflanzensprites an ihren Standort im Level, setzt sie aber in die Luft. Und zwar deshalb damit die Action mit TRACE fehlerfrei arbeitet. Um die Action an ein Sprite anzuhängen wird es mit der rechten Maustaste angeklickt. Dann weiter PROPERTIES --> BEHAVIOUR --> ACTION ( die noch folgende Action hier aufrufen). Buildet das Level mit UPDATE und ENTITIES. Voila alle Pflanzen stehen auf dem Terrain. Diese Aktion stellt nur ein Grundgerüst dar. Die Aktion die ich in meinem Level verwende enthält außerdem die Bounding_box des Sprites, Animationsframes, Zufallssteuerung der Pflanzenanordnung, Steuerung verschiedener Skins. Die Screens stammen aus einem älteren, nicht mehr aktuellem Level.

 

 

action plant_on_terrain {

 

          var plant_pos[3] = 0,0,0;

Zwischenspeicher für kurzzeitig neue Position der Entity

          var_plant_adjust = 24;

dieser Wert soll Restdifferenzen zum Untergrund ausgleichen. Er wird individuell eingestellt

          vec_set(plant_pos,my.x);

kopiere Position in Zwischenspeicher

          plant_pos.z - = 4000;

verringere Z Position des Zwischenspeichers um 4000

          trace_mode = use_box + ignore_me          +ignore_passable+ ignore_passents          +ignore_sprites+ ignore_models;

Parameter für Trace festlegen

          trace (my.x,plant_pos)

Trace von Position zur Zwischenspeicherposition

         my.z = target.z + ((my.max_z - my.min_z)/2)                      -plant_adjust;

Setze neue Z Position der Entity

}

 

 

Die Variable var_plant_adjust = 24 wird von euch individuell bestimmt. Lasst die Aktion einfach mal laufen mit einem Sprite über einer geraden Terrainfläche. Je nachdem ob euer Sprite nun zu tief im Boden steckt oder noch in der Luft, korrigiert ihr das mit dieser Variablen. Die zwei Variablen stehen übrigens innerhalb der Aktion. Damit sind es lokale Variablen, die nur innerhalb der Aktion benutzt werden können.