Jump to content
Unity Insider Forum

2D Top-Down Shooter (Komplett-Tutorial)


malzbie

Recommended Posts

Hi da.

Ich war mal wieder etwas fleissig und habe eine neue Tutorialreihe agefangen.

Dieses Mal geht es um das Erstellen eines kompletten Spieles.

Und weil es etwas einfacher ist, habe ich die 2D Fähigkeiten von Unity genutzt und stelle sogar die Grafiken zur Verfügung.

Die ersten 2 Teile sind gedreht und ich will sie gleich mal zusammen hier einbinden.

 

Teil 1:

 

Teil2:

 

Und hier sind die nötigen Grafiken als Zip-Paket: http://www.malzbie.com/tuts/Texturepack1.zip

 

Ja und wenns passt, kommt morgen auch schon der Teil 3. Will mich aber noch nicht 100%ig festlegen. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Beim Part 3 (hab nur mal das angeschaut) bei Asterwerfer hätte es eigentlich so sein sollen

 

public GameObject [] aster;

typ = Random.Range(0, aster.length);
wer = aster[typ];

 

Ist das eigentlich absichtlich so "freundlich" programmiert oder ist das wirklich dein Stil so zu programmieren?

:D Soll kein Angriff sein :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das war absicht. Ich versuche das so leicht wie möglich zu halten. :)

Arrays kommen wahrscheinlich auch noch ins Spiel, aber wenn, dann erst später. Momentan brauche ich die noch nicht und bei 2 Objekten lohnt es sich auch nicht unbedingt. Und wenn ich es mir so richtig überlege, hab ich ein Objektarray im Inspector eigentlich auch nur bei einem Spiel einmal genutzt.

Also man könnte sagen es ist auch mein Stil! :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

Teil 6 wurde fertig gestellt. Diesmal ist es eine racht lange Folge von über einer Stunde, aber es ist auch viel zu tun gewesen.

 

Die Scripte interagieren jetzt miteinander. So bekommt die GUI jetzt auch Daten für die Anzeige. Das Schiff wird zu Beginn instanziert und wenn es zerstört wird, gibt es einen feinen Übergang zum neuen Schiff. Ja und natürlich gibt es jetzt auch ein GameOver.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank. :)

Ich versuche soviele Dinge wie möglich mit dem Tutorial abzudecken, aber trotzdem nicht zu speziell zu werden.

Es sind natürlich schon echt lange Folgen und deswegen freut es mich umso mehr, dass sie auch geschaut und nicht nur kurz angeschnitten werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wieder Sonntag und wieder ne neue Folge! :)

Dieses Mal geht es um den Startscreen und den HighScore. Natürlich werden die Highscores auch dauerhaft gespeichert und bei jeden Start eingelesen.

 

Da ich momentan Urlaub habe, könnte es sein, dass es eine kleine Pause bis zur nächsten Folge gibt. Kommt ganz auf's Wetter an. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, Carsten. :)

 

Trotz Urlaub, konnte ich es aber nicht lassen und musste den 11. Teil der Reihe erstellen.

Hierbei geht es jetzt um die Stages die man durchfliegen muss und die natürlich unterschiedliche Dinge und Gegner haben sollen.

Wie man sowas steuern kann, zeige ich euch hier:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo bei den Highscoreteil habe ich mal gelesen wie du die Highscores aufgebaut hast.

Ich würde jedoch mit serializemethode machen.

 

Bei meinem Inventarsystem habe ich zum beispiel sowas gemacht. Ist sehr simple

 

private string serializeInventory() {
 string serialized = "";

 foreach(var item in inventory) {
  serialized += item.Key;
  serialized += ":";
  serialized += item.Value;
  serialized += ";";
 }

 // delete last semicolon
 if(serialized.Length > 0) {
  serialized = serialized.Substring(0,serialized.Length-1);
 }

 return serialized;
}

private Dictionary<int,int> deserializeInventory(string serialized) {
 Dictionary<int, int> inv = new Dictionary<int, int>();

 // Does the serialization have ONLY one item?  ("itemID:1" = 3 character)
 if(serialized.Length < 4)
  return inv;

 foreach(var block in serialized.Split(';')) {
  string []data = block.Split(':');

  int key = int.Parse(data[0]);
  int value = int.Parse(data[1]);

  inv.Add(key, value);
 }

 return inv;
}

 

Ungefähr sah es dann so aus.

1:2;2;1;3:1

Die erste Zahl war die ItemID und die Zweite war die Anzahl im Inventar.

 

Mann muss halt bissel anpassen.

Dann könnte es so aussehen

 

Heino:3300;Superfreak;2530;Susi:13
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja man könnte das auch so machen wie du da zeigst. Aber wo ist für dich der Vorteil dabei?

Das du es in einem abspeichern kannst oder wegen dem Dictionary?

 

Wenn ich mittels miniJSON abspeichere nutze ich auch ein Dictionary damit ich die Werte besser übergeben kann. Trotzdem nutze ich (gerade bei einem Inventarsystem) viel lieber mehrere Arrays im Spiel. Das ist für mich einfach einfacher zu bewerkstelligen, wenn ich in einem Array auf der Speicherstelle 1 (weil es der erste Slot vom Inventar ist) den Typ, die Anzahl, die Eigenschaft etc. finde. Ich gucke immer nur nach der Zahl und habe alles beisammen. Weiß auch nicht warum, aber ich mag das so lieber.

 

Sag mal, warum du das lieber serialisierst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sodele!

Jetzt ist auch der vorerst letzte Teil meiner Tutorialreihe oben.

Hier fürge ich 2 neue Gegner ein, die geballt von oben herien fliegen und ausweichen können.

Die Folge ist recht lang geworden obwohl ich vieles vorgearbeitet habe. Aber das gehörte alles irgendwie in eine Folge rein und schließt das Ganze recht gut ab.

Ich werde bestimmt noch einige Folgen drehen, mache aber ersteinmal eine Pause. Denn es wurde soweit alles gezeigt was für den Shooter wichtig ist und ab jetzt ist eure eigene Kreativität gefragt. ;)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...