Jump to content
Unity Insider Forum

An2435

Members
  • Content Count

    36
  • Joined

  • Last visited

Community Reputation

0 Neutral

About An2435

  • Rank
    Advanced Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Ok. Demnach setze ich jeweils schon bis zu fünf Autos in eine Bahn und lasse nur fahren, was ich brauche. Ich speichere dann nur die Positionen pro Level. Also nochmal für mich: Packe alles in eine Szene was Du brauchst, blende es ein, wenn Du es brauchst, blende es aus, wenn es nicht gebraucht wird. Erstellen und zerstören nutze ich demnach nur für den Endgegner x, weil der nur ein einziger Mal vorkommt um keine 300 Endgegner in der Szene zu haben? Nein, ich habe ihn immer da, aber wechsle nur den Sprite und seine Fähigkeiten, richtig? Ok. Wann erstelle und zerstöre ich etwas? Was macht man mit 100 Schuss, die durch das Bild fliegen? Ab wann würde man grob doch nicht alles reinsetzen? Gibt es da eine Hausnummer, die aber von den alten Klassikern wahrscheinlich nie gesprengt wird?
  2. Nachtrag; eigentlich ist das Quark mit der Anzahl der Autos, ich sollte gleich die x-Koordinaten speichern, daraus ergibt sich dann auch die Anzahl. In PHP lösen wir das gerne so "1,7,13","2,5,9" usw.; dann wird kurz explodiert und alles ist da. Ich sollte vielleicht erst sehen wie das andere machen mit dem Platzieren ... für x Level in einer Szene. Jetzt habe ich mir mal das hier anschauen wollen: https://github.com/cbpetersen/frogger-unity Aber irgendwas habe ich wohl falsch gemacht, da scheint doch einiges zu fehlen, oder?
  3. Ja, vielleicht könnte man den Titel in "Anfänger baut "Frogger" nach umbenennen. Angaben in welchem Level wie viele Autos fahren sollen // Autos int[,] autos = new int[10,5] { {3,3,3,6,2}, {4,4,3,7,3}, {4,4,5,2,3}, {4,4,4,8,4}, {5,4,5,4,3}, {3,3,3,1,2}, {4,4,4,7,3}, {4,4,5,7,3}, {4,4,4,8,4}, {5,4,5,4,4} }; Ich weiß nicht wie ich es anders speichern sollte. Im Array oben steht folgendes: In Level 1, siehe array(0) möchte ich je drei Autos auf der ersten Bahn, drei auf der zweiten, drei auf der dritten und ein schnelles auf der vierten und nochmal zwei auf der fünften Bahn. Ich mag Arrays und kann damit arbeiten. Wie sollte ich diese Info anders speichern? Soll ich zehn Szenen entwerfen und dann die Szenen 6-10 jeweils wiederholen? Meinst Du das mit visuell machen? Das ginge auch und hätte seinen Charme, klar. Andererseits mag ich die kleinen Rätsel, die man hierbei lösen kann. private int runde = 1; // Runde = int(level / 5) wenn % = 0, sonst + 1 // ab Lvl 5: index = level - (runde * 5) + 5 ergibt automatisch die Daten für ein Level durch das Level (int). Und wenn ich ein neues Level anlegen wollte, müsste ich fast nur dieses Array um ein, zwei, drei Zeilen erweitern neue Szenen zu kopieren und zu ändern. Nachtrag: Für all die vielen alten Spiele mit einem Hintergrund wie Frogger, Pacman und Co baut man jedes Level oder baut man nur eine Szene aus man es aus Rahmendaten? Ich würde einzelne Szenen nur bauen wollen, wenn es Instanzen von Szenen gibt, so dass ich die Mutterszene für alle Instanzen ändern kann, gibt es das, Instanzen von Szenen? Walktru war ein Hinweis auf eine Seite rund um Frogger, wo man unter anderem lesen kann wie viele Autos (Krokodile usw.) im jeweiligen Level vorkommen. Der frühere Hinweis auf ein anderes Buch (da ging es um die Steine für ein Breakout, wofür man a) GO erstellt, Prefab erstellt, GO löscht, Prefab inits macht). Diese Info habe ich einfach mal so übernommen. Das Warum fehlt noch. Every other = jedes zweite. Super. Danke. Also jeweils ein Baumstamm und ein krokodil in Level 8 und 9 auf Bahn 4. (siehe Walktru) AxxAAx steht für Autos und Abstände dazwischen. Wenn Du Dir hier z.B. ein Video anschaust, dann siehst Du für Level 1: https://www.youtube.com/watch?v=u23kf-XBack bei Sekunde 7, dass das Anfangsbild damit startet, dass auf Bahn zwei die Dreierfolge so startet, dass die hinteren zwei noch auf dem Bildschirm sind, während der erste schon wieder links rein kommt. Muss ich z.B. zwei Autos rein setzen (Lvl1, Bahn 5) könnte ich diese hintereinander oder mit Abstand aufstellen und abfahren lassen. Soweit ich das nicht zufällig mit geschätzten 5-7 Startpositionen mache, sondern fix vorgegeben, muss ich wieder (zehn Szenen bauen) oder in einem Array parallel zur Anzahl [] autos auch die Positionen (damit auch die Abstände) speichern. Ich kann AxA losfahren lassen oder eben AxxA; die Autos sind maximal 62 Pixel breit, belegen also zwei, sogar drei Felder und wir haben 13., die Rennwagen haben nur 32 Pixel, da gibt es also einige Variationsmöglichkeiten. Baue Sprites mit Wagen: 3er, 4er, 5er für Bahn1 z.B. Ich habe kurz überlegt, was ich alles machen könnte. Beispiel: Bahn 5 mit zwei LKWs. a) ich kann (und werde) zwei Inits erstellen, sie positionieren (geschätzte auf 8x und 13x bei 6.5 y), fahren lassen und außerhalb vom Bildschirm springen lassen. Man könnte auch b) ein großes Sprite nehmen mit zwei LKWs drauf und davon zwei benutzen. Das war nur eine Überlegung. c) könnte es sein, dass zwei gar nicht reichen? Das wäre der Fall, wenn 1 gerade heraus fährt, aber 3. schon reinkommt. Wahrscheinlich muss ich hier später mein Spiel und die Arcade Version parallel laufen lassen und dabei filmen. Mal sehen. Und jetzt lasse ich mal die Autos fahren, bevor die Nacht wieder herum ist.
  4. Ok. Angekommen. Wir nutzen nur Instanzen von Prefabs. Autos und Co wollte ich durchlaufen lassen und dann wieder auf außerhalb / rechts/links setzen. Mit den Autos fange ich heute an // Autos int[,] autos = new int[11,5] { {1,2,3,4,5}, {3,3,3,6,2}, {4,4,3,7,3}, {4,4,5,2,3}, {4,4,4,8,4}, {5,4,5,4,3}, {3,3,3,1,2}, {4,4,4,7,3}, {4,4,5,7,3}, {4,4,4,8,4}, {5,4,5,4,4} }; private int runde = 1; // Runde = int(level / 5) wenn % = 0, sonst + 1 // ab Lvl 5: index = level - (runde * 5) + 5 // index 0 habe ich mal aufgefüllt, kann man auch wieder abziehen, klar. Dies sind die Angaben aus einem Walktru; es bedeutet 1-5 = Anzahl Autos aber in Spalte 4 bedeutet 1-5 langsame Autos oder 6-10 schnelle Autos. (es gibt hier nie 5 Stk, aber vlt. will ich irgendwann ein anderes Schema.) Ab Runde 6 wiederholen sich die Level 6-10, 11-15 usw.; also zähle ich die Runden zu 5 Level; und berechne damit aus Level und Runde den Array Index. Leider habe ich bisher keine Infos gefunden wie die Wagen gesetzt werden. Ich werde also spielen bzw. die Videos anschauen müssen. Manches verstehe ich auch nicht: EVERY OTHER LOG IN LINE #5 A CROCODILE (was meint er nur mit jedes andere, den Videos nach meint das einfach alle?) Zurück zu den Autos, in Runde 1 sind z.B. 3, 3, 3,1 schnelles und 3, aber ich habe keine Info wie sie gesetzt werden. Liege ich aber richtig, dass die Festsetzung immer gleich ist? AxxAAx mit A= Auto, x = x Pixel Abstand; sowas in der Art? Möglichkeiten: Baue Sprites mit Wagen: 3er, 4er, 5er für Bahn1 z.B. dann kann ich diese aber nicht variieren (außer ich male verschiedene "3er" und "4er") und brauche dann jeweils zwei davon. Oder ich setze wie oben sowas wie AxxAAx - dafür muss ich die Abstände mal schätzen gehen. Sollten die Level im original immer gleich sein, dann sind Schlangen die einzige Abwechslung, dann wäre der Straßenteil immer gleich zu handhaben? v,r,v,rv,l für Level 6; v,r,l,v,r,z, o.ä? - will ich gar nicht glauben, oder doch als langsamer Einstieg für den Random-Teil oben? Ich ahne, dass ich das mi AxxAxA machen muss, dann kann man es per Option auch auf RND setzen später. Aus oben folgt demnach, dass ich mir 5 Sprites in die Szene ziehe, jeweils ein Prefab erstelle, diese in ein array 0-4 ziehe und dann im Script die notwendigen Instanzen erstelle? Dazu brauche ich dann a) einen Lageplan erstelle drei Instanzen und setze sie auf y = Bahn und x1, x2, x3 oder b) nimm rnd 3/4/5 von 5 und besetze mit Instanz nebst Sonderbehandlung von Bahn 4. Ob ich die bekannten Fehler auch einbauen soll? Zum Üben? Bzw. als Option mit Fehler a,b,c,d,e? Wobei ich gerne wüsste, ob der unsichtbare Lila Frosch ein Fehler oder Absicht ist. Wohl eher letzteres, denke ich. Wozu gibt es im Originalspritesheet eigentlich den Frosch horizontal? Konnte man damals nur spiegeln und nicht drehen? Ist er für die Froschdame auf den Balken?
  5. Ich habe: Frosch/Spieler=Rigid, daran hängt Script Movement, das aktuell noch die meiste Arbeit macht. Einen Zielfrosch als GO, dazu Prefab, => jedesmal, wenn ein Frosch im Ziel ist, wird eine Instanz erstellt und angezeigt, => ist das Level beendet, werden alle fünf Instanzen über das Tag "ZF" zerstört. Das Lebenicon ist ein GO, hat ein Prefab, es wird maximal siebenmal neu erstellt, bei Verlust wird das letzte zerstört. Alternativ baue ich sieben Prefabs, setze sie in ein array wie gestern die Ziffern. Das Levelicon ist ein GO, hat ein Prefab, das maximal 14 mal erschaffen wird, um 15 zu haben, Prefab 1 steht fix in der Szene. Beim Spielneustart werden alle 14 zerstört. (Muss ich noch machen) Die Ziffern für den Punktestand sind 10 Sprites und 5 Prefabs von Ziffer 0, sie stehen in der Scene. => wie gestern (oben) besprochen, wechseln hier die Sprites für den Zählerstand. Einblendung Start läuft für jeden neuen Frosch vier Sekunden lang. Sprite wird als Renderer angehängt, update zieht Deltatime ab bis 0, dann wird Sprite.enable=false gesetzt. Beim jedem Levelanfang wieder auf 4/true. Fehlend/zu machen Baumstämme Blätter a) normal b) Animation und Wechsel begehbar/nicht begehbar Krokodile a) im Wasser b) im Zielfeld Schlangen a) auf Wiese b) auf Baumstämmen Ratten/Bieber Fliegen a) auf Baumstämmen b) im Zielfeld; Fliegen treffen und tragen, Punkte erst im Ziel Fliegen im Ziel treffen und Punkte Verschiedene Autos Kollision Auto normal Wasser, aber nicht, wenn man auf a) Baustamm b) Blatt c) aber tot, wenn Blatt unter Wasser Wand oben, besetztes Zielfeld oben Logik beim Leveln (Autos schneller, Anzahl Schlangen usw.) Optionen mit vielen Schrauben - - - - - - - - Laut einem Buch wird ein Sprite in die Szene gezogen, dann ein Prefab erstellt, dann das Sprite gelöscht. Ist das der richtige Weg? Ich meine, dass ich deshalb 1. Sprite reinsetze, dann Prefab erstelle und nur mit dem Prefab als GO oder zum instanzieren arbeite bzw. weil es mit dem Sprite selbst nicht geklappt hat. (Ich lasse den Ursprungssprite aber erstmal in der Szene, löschen kann ich das immer noch) Ich sehe folgende Fälle, weiß noch nicht wo es wie sein soll: a) Spieler = rigid b) Sprites als GO mit Colider für Baumstämme, Schlangen, Monster, Feinde => braucht man mehr gibt es Prefabs, die kann man ==> im Script instanzieren ==> per Hand und Maus erzeugen und in den Ordner prefabs/Unterordner werfen, dann z.B. in ein public array setzen c) Sprites als GO/Prefabs manuell erstellt/instanziert als reine Anzeige zum einblenden => erzeugt/zerstört => erzeugt m/i und nur ausgeblendet d) GUI-Elemente nutzen? Habe ich noch nicht angeschaut. Sinnvoll für Icons für Level/Anzahl Leben? Zahlen hierzu am Beispiel: Frosch/Spieler 1 Zielfrösche 5, am Levelende müssen Sprites im Zeitverlauf jeweils ersetzt werden, Frosch zwinkert. Levelicon, maximal 15 Lebensicon (keine Ahnung, muss Frogger spielen, auf max. 7 setzen und sehen, ob der achte erscheint bzw. wie viele erscheinen.) Ich fange jetzt mit max. 7 Stk. an. Einblendung Start (hier nur Sprite als GO, wird zum Levelstart 7 Sekunden eingeblendet) Einblendung Restzeit (ein Sprite für Text plus Leerraum, oben dran Ziffern rechtsbündig Einblendung Zeit; es gibt dazu drei Sprites breit, kurz, ganz kurz; der Zeit geschuldet? Müsste man mit einem optisch gleich machen können.
  6. Neues Thema im Thema = Neuer Beitrag? Die Sprites für den Punktestand sind mit kleinen Änderungen, siehe oben, so gemacht wie vorgeschlagen. Die Meldung "Start" habe ich analog als Renderer bezogen und lasse sie nach vier Sekunden ausblenden. Beim Levelstart bekommt sie wieder 4 Sekunden. Das gleiche folgt morgen für die Spielzeit, die von x abwärts läuft. Ist das Level beendet, wird die Restzeit eingeblendet bis das nächste Level losgeht, dann folgt wieder Start. Dazu kommt Zeit minus Restzeit mal Punkte. Die fünf Zielfrösche habe ich derzeit noch gelassen, da sie nichts machen müssen, wechsel ich das morgen auch zu Renderern statt GO plus initierung? Am Levelende müssen sie dann einmal augenzwinkernd ersetzt werden, bevor sie wieder verschwinden. Die Anzeige des Levels erfolgt nur bis 15 durch Icons, auch die habe ich als Gameobject angelegt. Das wird 15 mal initiert. Soll ich das anders machen? (Jedes Level fügt ein Icon hinzu bis es 15 sind.) Wenn was nur angezeigt wird, aber eine wachsende Anzahl hat, nimmt man keine GO, sondern? Danach geht es zum ersten Mal an Kollisionen. Bei den Autos gibt es echte Kollissionen.. Bei den Baumstämmen ist es anders herum, man stirbt wenn man sie nicht trifft. Und bei den Ziellöchern ist es wieder wie bei den Autos. Fliegen fehlen auf dem Baumstamm und im Haus. Schlangen, Krokodile und Ratten? Wobei die Krodile dann eine Box kriegen für den Kopf und eine für den Körper, falls das geht. Körper = leben, Kopf = tot, Rest sowieso tot. - Dann brauche ich noch einen GameManager, den man vor dem Spiel füttern kann, ich will da einige "Schrauben" haben. - Mehr Musik muss noch rein, ich habe nur einen Teil der originalen FX. 😞 (Hier mit dem Smilie hatte ich gerade richtig Ärger, ich musste viele Pfeiltasten klicken um danach bei der Änderung weiterschreiben zu können.) Gute nacht und vielen Dank.
  7. Nächster Punkt. Im Moment folgt ein destroy über das gemeinsame Tag, wenn alle fünf Frösche zuhause sind, damit sie wieder verschwinden. Es würde ausreichen, sie unsichtbar zu machen oder auf eine andere Ebene zu verschieben bzw. Order in Layer zu verändern. ... Aktuell wird jeder ZielFrosch erstellt, hausnummer ist einer von 5 Slots frü den Frosch ganz oben. Sie liegen auf 1,4,7,10,13, darum 1+hausnummer*3 für die x-Koordinate // erstelle prefab für Hausnummer GameObject temp = Instantiate(zf, new Vector3(1 + hausnummer * 3f, 13.5f, 0), Quaternion.identity); temp.name = "ZF" + hausnummer.ToString(); temp.tag = "ZF"; Analog zum Vorschlag mit den Ziffern, wäre es dann auch besser die fünf Prefabs in ein public array zu ziehen? Und dann nur zu verschieben (wobei ich den Sort Layer mal reinnehmen könnte, dafür ist da? bzw. lese ich das gleich mal nach.)
  8. else { //renderers.sprite = null; renderers.sprite = sprites[0]; //renderers.enabled = false; } Das muss geändert werden, damit der Zähler mit 00000 anfängt.
  9. Ich habe meine zehn Sprites von 0 bis 9 in []sprites geschoben. Ich habe Prefabs von Ziffer0 erstellt und in [] Renderers gezogen. SetNumber läuft für 0 bis 4, fünf mal wenn die übergebene Ziffer > 0 ist, wird der Wert Sprite vom Renderer auf %10 gesetzt? Wenn ich das richtig verstehe: Renderer hat Eigenschaften wie Sprite, Color usw. Ich hätte erwartet, dass man nun die Sprites anhand ihrer Namen tauscht. Als Renderer.Sprite="gui90" für 0, gui91 für 1 usw. Da wir die Sprites aber im array Sprites haben, soll man nun array sprites(x) zuweisen? Ok, dann passt das vielleicht? renderers.sprite = sprites[number % 10]; ich bekomme den Rest von 0-9/10 also 0-9 beim einer, dann ziehst Du die letzte Ziffer ab und von vorne. Was mich völlig nervt, ist dass es ständig Fehler ohne Zeilenangabe gibt. Bin ich nicht gewohnt. Muss man damit leben oder kann man da was ändern? Beim Interpreter hilft stets ein "bin bei 2, bin bei 3 ...
  10. renderers.sprite = number % 10; Der Typ int kann nicht in Sprite konvertiert werden.
  11. Müssen die Kopien eines Prefabs abhängig von seiner Position liegen? Ich habe einen Zielfrosch (17/13) und seine Kopie (0/0) und habe eben erst bemerkt, dass sie aufeinander liegen. Die tatsächlich gebrauchten Zielfrösche werden im Script gemacht und gelöscht, wenn ich sie nicht mehr brauche. (Evtl. auch nicht gut? Aber funktionierte vorhin. Von Referenzieren referenzierter Referenzen habe ich leider immer noch keine Ahnung, aber ich bleibe dran.
  12. Ja, das finden fühlt sich komisch an, das haben ist besser. Bisher hatte ich die Namen in ein Array gepackt, aber ich kann auch die Objekte also direkt behalten, ok. Das probiere ich noch, und wenn das Bett droht, tausche ich zu Deiner Lösung um. private Enemy[] enemyInstances; ist vom typ GO? private GameObject Enemy[] enemyinstances; ? Nein, geht/ging nicht. Darum wollte ich den Weg über die Namen gehen, da ich Strings speichern konnte. --- geht doch, prima private GameObject[] meineZiffern; void Start() { // setze Score mit 00000 for (int i = 0; i < 5; i++) { meineZiffern = Instantiate(ziffer, new Vector3(2 + i * 0.5f, 15f, 0), Quaternion.identity); meineZiffern.name = "Score" + i.ToString(); meineZiffern.tag = "ZI"; }
  13. Um an mein array mit den Ziffern zu kommen, mache ich am besten das? stellen string punkte int stellen = punkte.ToString(); char[] array = stellen.ToCharArray(); Fehlen noch die Nullen oder aber: für 0 bis 4, nimm Ziffer, wenn Wert > 0, sonst 0 Somit kann ich mir das Anfügen von Nullen vorne sparen.
  14. Ich habe mich schlecht ausgedrückt. Ich habe jetzt Ziffer0 als GO, davon eine Prefab, dieses in einer public gespeichert. Im Script erstelle ich fünf Kopien mit Namen Score0 bis Score5; diese fünf möchte ich anhand ihres Namens finden und dann denn zugehörigen Sprite ändern. (Es geht mir nicht darum, dass das Spiel nachher läuft, sondern, dass ich alle Wege verstehe. Wie z.B. Initieren mit Name in Variable statt nur Namen, was vorhin nicht geklappt.) Und darum, dass ich beide Wege verstehe Sprites in public ziehen oder Sprites laden (mit Unterschied ob Single oder aus Multi) Oder Ziffern in public legen oder fünf Prefabs mit Namen machen. Und war da nicht was mit Serialization bei public arrays? habe jetzt Fehler ... suche ...
  15. Das ist sehr lieb von Dir. Danke. Wobei ich immer das will, was ich nicht verstehe. Ich kann die zehn Sprites reinziehen in public [] oder alle laden. Ok. Ich kann fünf GO anlegen für die fünf Stellen oder fünf Prefabs mit Namen machen <= hier fehlt mir jetzt noch der Zugriff, aber ich suche.
×
×
  • Create New...