eine Plattform zwischen zwei Objekten hin und her bewegen

In diesem kleinen Tutorial erkläre ich, wie man in Unity3D eine Plattform zwischen zwei Objekten hin und her fahren lassen kann, so wie man das von vielen SideScroller-Games wie z.B. Mario kennt.
Um das Beispiel zu verdeutlichen erstellen wir als erstes zwei Würfel und richten diese so aus dass ein gewisser Abstand zwischen den beiden besteht. Einen Würfel nennen wie CubeStart und den zweiten Würfen CubeEnd. Nun erstellen wir einen weiteren Würfel den wir in der Höhe ungefähr auf ein Drittel der ursprünglichen Größe verändern. Diesen Würfel nennen wir CubePlatform und platzieren diesen zwischen den beiden zuvor erstellten Würfeln. Damit sich diese Plattform nun automatisch zwischen den beiden Würfeln hin und her bewegt, benötigen wir ein Script das wir unserer Plattform zuweisen. Dazu erstellen wir nun ein neues JavaScript das wir in MovePlatform umbenennen. Den Quelltext für diese Datei sehen Sie unten. Die Erklärungen zu den einzelnen Befehlen und Variablen finden Sie im Anschluss.

 

MovePlatform

#pragma strict

var startPos : GameObject;
var endPos   : GameObject;
var Speed : float = 0.3;
var minimalDistance : float = 0.1;

private var Direction : boolean = true;

function Update()
{
  if(Direction && (endPos.transform.position - transform.position).magnitude > minimalDistance)
  {
    transform.Translate((startPos.transform.position - endPos.transform.position) *- Time.deltaTime * Speed);
  }
  else if(!Direction && (startPos.transform.position - transform.position).magnitude > minimalDistance)
  {
    transform.Translate((startPos.transform.position - endPos.transform.position) * Time.deltaTime * Speed);
  }
  else
  {
    Direction=!Direction;
  }
}

function Start()
{
  transform.position = startPos.transform.position;
}

Erklärung des Quellcodes
Wenn wir das Script der Plattform zugewiesen haben, kann man im Inspektor den Würfel CubeStart und CubeEnd den beiden Variablen startPos und endPos zuweisen indem man diese GameObjecte einfach in den Inspektor an die gewünschte Stelle zieht.
Die Variable speed sollte selbsterklärend sein.
Mit der Variable minimalDistance kann man steuern wie weit die Plattform an die Start- und Endwürfel fahren soll. Da ich die Würfel in der Größe nicht geändert habe, war ein Wert von 1.5 für mich angemessen.
Die private Variable Direction wird durch das Scriot selber in der Update-Funktion jedes mal dann gesetzt wenn der Start oder Endpunkt durch die Plattform erreicht wird.
In der Update-Funktion wird unsere Plattform nun mit der eingestellten Geschwindigkeit zwischen dem Start- und dem Endwürfel bewegt.

Über Enrico S.

Programmierer, Webdesigner, Grafiker, Blogger, Screencaster, Arduino- und eMobility Enthusiast. nefilim3006 ist auch bei Google+ vertreten

Kommentare geschlossen.