Objekte dynamisch erzeugen und platzieren

Wenn man ein Spiel programmieren will dann steht man bald vor der Herausforderung, Objekte wie z.B. Items die durch den Charakter eingesammelt werden müssen, zu erzeugen und auf der Spielfläche zu platzieren. Das ist auch nicht schwer wenn die Spielfläche eine gerade Fläche und keine Hügellandschaft ist. Heute möchte ich euch ein kurzes script vorstellen, was die Höhe des Punktes Y auf dem Terrain an der Koordinate X und Z ermittelt und an diesem Punkt ein Objekt platziert.

Beschreibung der Werte die man dem Script übergeben kann:

Item Objekt: das Objekt selber. z.B. eine Kugel
Item Dumping Y: der Abstand des Objektes vom Boden
Items: Anzahl der zu erzeugenden Objekte
Range X und Range Z: Angabe des Bereichs auf der X und Z Achse, in dem die Objekte platziert werden sollen. Um das script zu benutzen benötigt man ein Terrain. Ich habe das script direkt dem Terrain zugeordnet.

Zu beachten wäre noch folgendes. Wenn ich eine Kugel mit einem Durchmesser von 20 habe und bei Item Dumping eine 0 eingebe, dann wird die Kugel zur Hälfte in der Erde stecken da der Mittelpunkt der Kugel sozusagen der Nullpunkt ist. Soll die Kugel also genau auf dem Boden liegen dann wäre ein Wert von 10 nicht verkehrt.

#pragma strict

var ItemObject: Transform;
var ItemDumpingY: float = 0;
var Items: int = 10;
var RangeX: float = 200;
var RangeY: float = 200;

static var itemsCount: int = 0;

function Awake()
{
  itemsCount = 0;
}

function Start ()
{
  var Position : Vector3;

  for (var i : int = 0;i < Items; i++)
  {
    Position = Vector3(Random.Range(0, RangeX),0,Random.Range(0, RangeY));
    Position.y = Terrain.activeTerrain.SampleHeight(Position) + ItemDumpingY;
    Instantiate(ItemObject, Position, Quaternion.identity);

    itemsCount = itemsCount + 1;
  }
}

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast.

Kommentare geschlossen.