Essen
Lektion 5 von 14 im Kurs Unity-Spiel: 3D-Snake von Coddy.
Das Futter liegt auf einer zufälligen Zelle. Zellen haben ganzzahlige Koordinaten, also wähle x und z mit der int-Version von Random.Range. Bei ints ist der Höchstwert ausgeschlossen: Random.Range(1, 7) würfelt eine Zahl von 1 bis 6, niemals 7. Um eine Zahl einzuschließen, gib eine um eins höhere Zahl an.
Bei float-Argumenten gibt Random.Range eine beliebige Zahl dazwischen zurück, zum Beispiel 3.62. Diese liegt nicht in der Mitte einer Zelle, daher würde die Schlange das Futter niemals erreichen. Eine Truhe auf einem 10-mal-10-Raster mit Zellen von 0 bis 9:
int row = Random.Range(0, 10); // 0 bis 9
int column = Random.Range(0, 10);
chest.position = new Vector3(column, 0f, row);Auf dem Spielfeld gibt es jeweils nur ein Futterstück, daher erzeugt das Spiel es einmal in Start() und bewegt es, wenn es einen neuen Platz benötigt. GameManager verwaltet das Futter und liest die Größe des Spielfelds über ein snake-Feld aus dem edge der Schlange aus.
Aufgabe
MittelVervollständige GameManager. Die Szene weist snake die Snake des Kopfes und foodPrefab eine rote Kugel zu.
- Füge
public Snake snake;,public GameObject foodPrefab;undprivate Transform food;hinzu. - Erzeuge in
Start()eine Instanz vonfoodPrefab, speichere dessen Transform infoodund rufeMoveFood()auf. - Schreibe
void MoveFood(): Die Methode platziertfoodauf einer zufälligen Zelle, wobei x und z jeweils von-snake.edgebissnake.edgereichen und y 0 ist.
Drücke Play und suche das Essen auf dem Spielfeld. Drücke dann Check.
Probier es selbst
using UnityEngine;
public class GameManager : MonoBehaviour
{
// Steuert das Spiel: das Futter, den Punktestand und das Spielende. In Kapitel 2 wird das ergänzt.
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.