Das eigene Virtual Reality Spiel mit Unity3D – Tag 3: Highscores, Dots und Coding?!

In diesem Teil von DeVRSmU3D geht es (endlich!) auch mal ans Coden! Wir erstellen unter anderem einen Highscore Bildschirm, welcher die aktuelle Punktzahl anzeigt und natürlich die berühmten Pacman Dots die unserer Held einsammeln muss!

Vorherige Teile Teile:

Tag 1: Vorbereitung

Tag 2: Unity und unser erstes Level

 

Als erstes bauen wir ein ganz einfaches Highscore-System und anschließend erstellen wir die „Dots“ die uns Punkte geben sollen. Dieses mal habe ich das ganze mehr als Video Tutorial gemacht, da man viele Dinge dort leichter erklären kann und ihr dem Tutorial meiner Einschätzung nach auch besser folgen könnt, als in einem langen Text. Alle entwickelten Scripte findet ihr unterhalb dieses Videos mit zusätzlichen Kommentaren, welche nochmal wiederholen oder vertiefen wie das Script funktioniert.

Als erstes die Highscore Komponente:

using UnityEngine;
using System.Collections;

public class pacmanHighscore : MonoBehaviour {
	 // Speichert die aktuelle Punktzahl
	private int highscore;
	 // Referenz zum angezeigten Text
	private TextMesh textMesh;

	// Use this for initialization
	void Start () {
		//Bei Spielstart, setze Punktzahl auf 0
		highscore = 0; 
		//Finde die Komponente die den Text anzeigen soll
		textMesh = GetComponentInChildren(); 
		// Initialisiere den Text
		textMesh.text = "Score: "+highscore; 
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	 //Wird von einer anderen Komponente aufgerufen, wenn sie den Highscore erhöhen soll
	public void AddHighscore(int score){
		 //Wir wollen nur positive Highscores durchlassen		
		if(score<0){
			score = 0;
		}
		 //erhöhe den Highscore. += bedeutet, dass der Wert zum aktuellen Wert addiert wird
		highscore+=score;
		// Ändere den angezeigten Text
		textMesh.text = "Score: "+highscore; 
	}
}

Und hier ist auch die „Dots“-Komponente:

using UnityEngine;
using System.Collections;

public class pacmanDot : MonoBehaviour {
	// Referenz auf die Highscore Komponente
	// Static heißt, wenn es mehrere Objeklte mit dieser Komponente gibt, 
	// dann teilen sich alle Instanzen diese eine Variable
	private static  score;
	// Wie viele Punkte soll dieses Objekt geben?
	// Public Variabeln können über den Inspector gesetzt werden
	public int points = 100;


	// Use this for initialization
	void Start () {
		// Nur wenn noch keine andere Komponente nach der Highscore Komponente gesucht hat, 
		// suchen wir danach
		if(score==null){
			score = GameObject.FindObjectOfType();	
		}
	}

	// Wird ausgeführt, sobald der am selben GameObject hinzugefügte Collider getriggered wird.
	// Is Trigger muss dafür aktiv sein
	void OnTriggerEnter(Collider c){
		// Wir prüfen ob der Spieler das Objekt getriggerd hat, 
		// denn das Objekt wird auch getriggert wenn z.B. ein Geist durch den Dot läuft.
		// Der Name unserers Spieler-Objekts muss von 
		// "XY Player Controller" in "Player" geändert werden.
		if(c.gameObject.name.Equals("Player")){
			// Rufe die AddHighscore Methode auf, um Punkte zu addieren
			score.AddHighscore(points);
			// Zerstöre den aktuellen Dot, sodass er nicht mehrmals eingesammelt wird.
			Destroy(this.gameObject);
		}
	}
}

So das war es! Wenn ihr noch fragen habt, schreibt sie einfach in die Kommentare und ich werde versuchen sie so gut wie möglich zu beantworten. Ich hoffe euch gefällt diese Tutorial-Reihe! Im nächsten Teil werden wir die Geister AI schreiben, ich hoffe ihr freut euch drauf! Vergesst nicht euch für den VR Jam anzumelden, wenn ihr Teilnehmen wollt, es gibt top Preise zu gewinnen!

Bereits veröffentlichte Teile:

Tag 1: Vorbereitung

Tag 2: Unity und unser erstes Level

Tag 3: Highscores, Dots und Coding?!

Tag 4: Oculus Rift Support und Unity 5 Pro im Angebot!

Daniel Korgel

Geschrieben von

Ich bin Daniel Korgel und bin ein selbständiger Software Entwickler im Bereich Virtual Reality. Ich programmiere in meiner Freizeit schon sehr lange und bin gut unterwegs mit C# (& .Net), Java, HTML, PHP und MYSQL. Kenntnisse in C, C++ und Assembler sind aber auch vorhanden. Zudem arbeite ich derzeit auch an meinem Bachelor. In meiner Freizeit sammle ich alte Spielekonsolen und bin auch hin und wieder im Skatepark anzutreffen. Twitter: @DakorVR , @Bloculus_de| Xing: xing.com/profiles/Daniel_Korgel


8 Meinungen zu “Das eigene Virtual Reality Spiel mit Unity3D – Tag 3: Highscores, Dots und Coding?!

  1. So langsam bekomme ich auch Lust mein Glück mal zu versuchen.
    Wirklich gute Reihe die Du hier gestartet hast !

    Danke Daniel . . . !

  2. Ein wirklich hilfreiches TuT ! als absoluter anfänger ( mit nem haufen motivation was eigenes zu machen sobald die consumer version drausen ist xD ) ein super einstieg ! hast du vor in zukunft noch mehr tuts zu machen ? wäre echt super ! ^^ lg

  3. Pingback: Das eigene Virtual Reality Spiel mit Unity3D – Tag 4: Oculus Rift Support und Unity 5 Pro im Angebot! | Bloculus Das deutsche Oculus Rift News Blog

  4. Ich finde deine Reihe hier Klasse und wollte mir nicht nehmen lassen es auch mal auszuprobieren.
    Aber gerade stehe ich vor einem kleinen Problem.
    Bin ich einfach zu doof den 3D Text zu finden, oder gibt es den in der Free Version gar nicht? :)
    VG.

    • Hey,
      TextMeshes sollte es auch in der Free Version geben. Wenn du es in der Hierarchie unter „Create“ nicht findest, kannst du aber auch ein neues leeres GameObject zu erstellen (Create Empty GameObject) und dann kannst du rechts im Inspector auf „Add Component“ und dann nachh „Text Mesh“ Filtern.

      Bei neueren Unity Version ist die Gruppierung in den Menüs leicht anders.

      Ich hoffe das konnte helfen,
      Mit bestem Gruß,
      Daniel

Kommentar verfassen