Göra ett 2D spel med Unity (18 / 19 steg)
Steg 18: Spel över
Kan lägga till denna scen i bygget innan vi börjar den nya scenen. Välj bygga inställningar i menyn Arkiv pulldown.
I dialogrutan som öppnas, klicka på knappen Lägg till nuvarande och kontrollera att scenen har en scen # noll. Stäng dialogrutan.
Se till att du sparar din aktuella scen och välj sedan ny scen. Namnet på scenen GameOver och lägga den i mappen tillgångar.
Lägga till ett GUIText objekt i GameObject rullgardinsmenyn. I granskaren, ändra ankare till upperen centrerar och justering att centrera. Också ändra teckenstorleken till 20 och färg till svart.
Tillbaka i scenen, dra klibbig anteckningen kallas notes_score till scenen och placera den ungefär center, använda spelfönstret för att se hur det ser ut. Gör samma sak med Game Over spriten, bara släppa det där det ser bra ut.
Skapa ett gameOver skript i mappen skript, som den här.
använder UnityEngine;
använder System.Collections;
allmän klass GameOver: MonoBehaviour {
int poäng = 0;
offentliga GUIElement gui;
Använd detta vid initiering
Ogiltig Start () {
få våra poäng från playerprefs
poäng = PlayerPrefs.GetInt ("poäng");
multiplicera med 10 som vi gjorde på visas poäng
poäng = poäng * 10;
}
void OnGUI() {
ställa in vår text till våra poäng
gui.guiText.text = poäng. ToString ();
Om du trycker retry knappen Ladda scen 0 spelet
IF(GUI. Knappen (nya Rect (Screen.width/2-50,Screen.height/2 + 150, 100, 40), "försök igen?")) {
Application.LoadLevel(0);
}
och avsluta-knappen
IF(GUI. Knappen (nya Rect (Screen.width/2-50,Screen.height/2 + 200, 100, 40), "Quit")) {
Application.Quit();
}
}
}
Spara den och dra den till Main kameran i vår nya scen.
Nästan alla slutförda, vi måste lägga till en funktion i våra skript att passera poäng framåt och vi måste ändra vårt jagare skript där vi har koden rasten att skicka oss till GameOver scenen.
Den nya kamera skriften.
använder UnityEngine;
använder System.Collections;
allmän klass pancam: MonoBehaviour {
flyta ydir = 0f;
offentliga GameObject spelaren;
för våra GUIText objekt och våra poäng
offentliga GUIElement gui;
flyta playerScore = 0;
Denna funktionen uppdaterar vår guitext objekt
void OnGUI() {
gui.guiText.text = "poäng:" + ((int)(playerScore * 10)). ToString ();
}
Detta är generisk funktion som vi kan kalla för att öka poängen med ett belopp
public void increaseScore (int belopp) {
playerScore += belopp;
}
Kameran kommer att inaktiveras när vi laddar en nivå, som poängen i playerprefs
void OnDisable() {
PlayerPrefs.SetInt ("Score",(int)(playerScore));
}
Uppdatering anropas en gång per bildruta
void uppdatering () {
Kontrollera att spelare finns och sedan fortsätta. annars får vi ett felmeddelande när spelaren dör
om (spelare) {
om spelaren har gått x-position-1 börja sedan flytta kameran framåt med en randomish Y-position
om (player.transform.position.x > -1) {
uppdatera våra poäng varje tickande av klockan
playerScore += Time.deltaTime;
float randy = 0f;
Randy = Random.Range (0f, 100f);
om (randy < 20) {
ydir = ydir + .005f;
} else om (randy > 20 & & randy < 40) {
ydir = ydir - .005f;
} else om (randy > 80) {
ydir = 0f;
}
Transform.position = ny Vector3 (transform.position.x + 0.03f, transform.position.y + ydir, -10);
}
}
}
}
Skriptet fast jagare
använder UnityEngine;
använder System.Collections;
allmän klass jagare: MonoBehaviour {
void OnTriggerEnter2D(Collider2D other) {
om det objekt som utlöste händelsen är märkta spelare
om (other.tag == "Spelare") {
Application.LoadLevel(1);
}
om (other.gameObject.transform.parent) {
Förstöra (other.gameObject.transform.parent.gameObject);
} annat {
Förstöra (other.gameObject);
}
}
}
Gissa vad? Du gjorde bara ett spel! Jag gjorde också! Woot för oss!
OK, så det är inte det bästa spelet i världen, men det är knappast det är det. Åtminstone var det inte för mig. Jag var chockad över hur enkelt det har allt blivit, och jag var tvungen att dela. Go få att göra, jag kan inte vänta med att spela några nya coola spel!