Jump to content
Unity Insider Forum

KaBau

Members
  • Content Count

    147
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by KaBau

  1. Nur eine Überlegung, da ich so eine Fehlermeldung vor Kurzem beim Ändern des Alpha Wert von Shadern hatte: muss eventuell der zu ändernde Wert in Klammern mit Ausrufezeichen gesetzt werden und mit get... und set... geändert werden?
  2. Juhu, neuer Endgegner. Dieses mal in den Wolken des Jupiters. Special Thanks an @Jog für das Ende. Ergänzend zu den Credits der letzten Videos: Nun verwende ich auch zusätzlich Texturen von https://pixabay.com/de/
  3. Sorry das ich nun selber Antworte, aber nach etlichen weiteren Tutorials und dem Durchforsten der Unity - Documentation habe ich nun für mich eine Lösung gefunden (wie oben geschrieben hat mein GO schon einen Fade-Shader): [SerializeField] float fadeTime; [SerializeField] Renderer fadeObjekt; // hier das zu ändernde GO reinziehen public Color fadeAlpha; private void Start() { fadeAlpha = fadeObjekt.material.GetColor("_Color"); StartCoroutine("FadeOut"); } private void Update() { fadeObjekt.material.SetColor("_Color",fadeAlpha); } private IEnumerator FadeOut() { float duration = fadeTime; float fadeStart = 1f; float fadeEnd = 0f; for (var time = 0.0f; time<duration; time += Time.deltaTime) { var progress = time / duration; fadeAlpha.a = Mathf.Lerp(fadeStart, fadeEnd, progress); yield return null; } } Danke aber trotzdem, da ich aufgrund der oben von Kojote aufgeführten Scriptzeilen nun doch ein kleines bischen verstehe, was ich tue.
  4. Hallo @Kojote, ich versuche gerade, deinen Code zu übernehmen. Da ich aber mit der Programmierung von Shadern keine Ahnung habe, weis ich gar nicht, was ich hier mache. Und da es nicht läuft, habe ich noch weniger Ahnung, woran das liegen kann. Ich hatte alles ab "Initialisierung" in ein Script gesetzt (deinen ersten Abschnitt hatte ich als Erläuterung verstanden, welche nicht für die Funktion dieses Script notwendig ist) und dieses dem GameObjekt zugewiesen. Mir wird aber für die Zeile material = smr.material; aus der Start Methode folgende Fehlermeldung zurückgegeben: "NullReferenceException: Object reference not set to an instance of an object FadeInOut.Start () (at Assets/scripts/FadeInOut.cs:19)" Mein GameObjekt hat schon den Standard Shader mit dem Rendering Mode "Fade", ich muss also den Mode nicht auf "Fade" schalten. Ich habe in meiner Szene verschiedene Objekte mit demselben Shader, es sollen aber die Objekte unabhängig voneinander Ein- und Ausblenden. Das schreibe ich, da ich probehalber im Inspector eines GameObjekt den Alphawert über den Schieberegler geändert habe, und alle anderen GamObjekte sich mitgeändert haben - was so nicht von mir gewünscht war. Vielleicht kannst du (oder auch jemand anderes) mir helfen. Danke.
  5. Nun hatte ich wieder das Problem. Die Einstellungen waren wie von @TheMono bei mir richtig vorgenommen - trotzdem wollte Visual Studio keine Vorschläge machen. Was mir nun geholfen hatte: ich habe den Ordner "Library" im Verzeichnis meines Spiel ersteinmal umbenannt, um ihn später zu löschen. Nach einem erneuten Start von Unity wurde dieser natürlich neu erstellt (mit nur noch der Hälfte an Daten) und ich konnte Visual Studio wieder normal nutzen.
  6. Oh, ich stelle gerade fest, das a) das Space Shooter Tutorial schon recht alt ist und b) ich es auf der geänderten Unity-Seite auf Anhieb gar nicht mehr finde, sondern erst nach Eingabe von "space shooter tutorial", bzw. c) genau der Abschnitt mit dem sich bewegenden Hintergrund scheinbar gar nicht mehr in dem Tutorial enthalten ist. Deshalb hier mein Script, welches ich auf Grundlage des oben genannten Tutorial erstellt habe: public class BGScroller : MonoBehaviour { [SerializeField] private float scrollSpeed; [SerializeField] private float tileSizeZ; public bool scrollYes = false; [SerializeField] private float startScroll; private Vector3 startPosition; void Start () { Invoke("StartScrolling", startScroll); } private void StartScrolling() { startPosition = transform.position; scrollYes = true; } void Update () { if (scrollYes) { float newPosition = (Mathf.Repeat(Time.time * scrollSpeed, tileSizeZ)) - tileSizeZ; transform.position = startPosition + Vector3.forward * newPosition; } } } Das gesamte Thema um die Variable "scollYes" kann auch weggelassen werden. Auf Youtube ist noch eine gesamte Zusammenstellung des Tutorial enthalten. Ab ca. Minute 20 geht es hier um den Hintergrund: Ich hoffe, es hilft dir weiter.
  7. Bewegt sich dein Spieler, oder die Fläche unter dir? Für den zeiten Fall schau dir Mal das Space Shooter Tutorial direkt von Unity an. In einem Teil wird der Untergrund immer wieder neu versetzt.
  8. Wieder ist viel Zeit verstrichen, bis ich den nächsten Endgegner erstellt habe (nur Model, noch nicht programmiert). Level 3, Saturn: Die Flügel fahren erst später raus, sind also nicht von Anfang an zu sehen. Der lange Schwanz wird am Ende nach dem Player schlagen.
  9. Nach fast 1 1/2 Monaten habe ich endlich das Model und die Texturen eines weiteren Endgegner fertig gestellt. Dieses mal geht es zum Mars: Aus dieser sich drehenden Halbkugel fahren natürlich diverse Kanonen herraus, welche hier noch nicht zu sehen sind. Und zur Ergänzung des Endgegner aus meinem Betrag vom 6.Mai: Diese Kanone steht auf dem Jupitermond IO. Einfach mal "IO C64" googeln, dass wist ihr, was mein Vorbild war.
  10. Hallo @Fazeli24, unter habe ich meinen Player Controller für die Touch Steuerung gepostet und erklärt. Unter wiederrum ist mein Controller für die Maus- und Tastatur erläutert. Für Space Invaders musst du einfach eine Bewegungsachse weglassen. Es gibt nun in Unity aber ein komplett neues Input System, mit dem ich mich noch nicht auseinander gesetzt habe. Wenn du noch nicht zuviel Zeit mit deinem Controller verbracht hast, rate ich dir, gleich das neue Input System zu lernen. Ich denke mir, dass dieses irgenwann in ein paar Jahren zum Standard wird und das alte Input System "obsolete" wird und nicht mehr zu nutzen ist. So habe ich es im Laufe der Zeit mit dem einem oder anderem Befehl immer wieder gehabt. Somit ein allgemeiner Rat: nutze kein Tutorial und keine Scriptvorlage, welche älter wie 3 Jahre (habe ich für mich persönlich einfach mal so festgelegt) ist.
  11. Wer bei der Touch-Steuerung mein Script verwenden möchte, sollte bitte folgendes beachten:
  12. Ein weiterer Endgegner wurde mit Texturen versehen: Level 7, Asteroidenfeld. Wenn ich es nun als Bild sehe denke ich mir aber, dass doch zu viele Asteroiden zu sehen sind.
  13. Besser beides😉 Ich bin grundsätzlich aber ersteinmal am Texturieren meiner anderen Modelle. Das Programmieren des Endgegner war nun dazwischengeschoben, weil @Jog es erwähnt hat - und nach seinem Artwork oben war ich es ihm irgendwie schuldig 🙂. Ich habe als Alleinkämpfer das Problem, dass in jedem Programm identischen Aktionen unterschiedlich ausgeführt werden. Z.B. das Drehen des Arbeitsbereich im 3D Raum mit der Maus. Deshalb brauche ich immer etwas Umgewöhnungszeit, wenn ich von Blender auf Unity wechsle (zumal ich als Bauzeichner auf der Arbeit mit einem weiteren Programm EliteCad arbeite, wo das wieder anderst ist). Was ich damit sagen möchte: ich werde irgendwann später mir die Zeit nehmen, um bei https://www.zapsplat.com/ nach weiteren Sounds zu suchen. Dann möchte ich aber wissen, für welche Aktionen ich noch Sound suchen muss, sprich das Spiel muss weiter sein. Und dafür benötige ich ersteinmal die Modelle aus Blender. Früher hatte ich mit einfachen Grundkörpern aus Unity oder meinen Zeichenprogramm von der Arbeit Platzhalter geschaffen. Ich habe aber festgestellt, dass das doppelte Arbeit ist, da die detailierteren Blendermodelle doch etwas anders im Prefap anzuordnen sind, etwas andere Collider benötigen oder die Zeit einer Bewegung angepasst werden muss, da das Blendermodell final von den Platzhaltern abweichen. Anbei ein Beispiel, zuerst die alten Platzhalter, dann das Modell aus Blender. Im Hintergrund ist die Wolkendecke des Jupiter zu sehen. Ich werde also später die Sounds und auch die Explosionen anpassen müßen.
  14. Heute war ein schöner Tag, aber ich war trotzdem nicht draußen. Ich habe endlich den Endgegner vom Level 2 programiert und konnte nicht locker lassen, bis er (weitestgehend) fertig war. Beim spätern finalen Einsatz im Spiel wird es noch weitere Geräusche geben, wenn die verschiedenen Teile vom Gegner aus diesem herraus fahren. Zudem wird es im fertigen Spiel etwas mehr Hintergrund geben. Es werden verschiene alte Wracks sichtbar sein. Hier nun das Video:
  15. Hallo @Tachyoon, mit den Geräuschen bin ich auch noch nicht zufrieden. Ich weis, dass ich hier noch nachbessern muss. Derzeit kann ich aber damit leben und widme mich den Themen, die das Gesamte weiter bringen. Man möchte ja selber einen Fortschritt sehen, damit man nicht das Interesse verliert. Du hast recht, es ist ersteinmal ein Demo um die Gegner zu zeigen. Wenn ich den Endgegner mit der Kugel fertig habe, kann ich ja mal einen kompletten Duchlauf des ersten Level zeigen.
  16. Hallo, hier kommt ein Bild eines weiteren Engegner. Diesesmal auf einem Mond des Jupiters (eventuell findet ja jemand heraus welcher Mond gemeint ist) . Ich werde mich nun an die Programmierung des zuvor genannten kugekförmigen Endgegner setzen, damit @Jog auch sieht, wie dieser Gegner in Aktion aussieht 😉.
  17. Im normalen Arbeiten ist es wirklich einfacher, wenn du kleinere einzelne Sripte hast. Beispiel: Sollen sich verschiedene Gameobjekte neben verschiedener ander Sachsen auch um die Z-Achse drehen mach dafür ein eigenen Script und weise dieses im Inspector den GameObjekten zu. Somit siehst du schon anhand des Vorhandensen des Script (ich habe es bei mir "TranformRotZ" genannt), dass sich dieses GameObjekt dreht, ohne dafür in das "MasterScript" des GameObjekt nachschauen zu müßen.
  18. So, der erste Endgegner ist designed. Da im ersten Level nur eine größere Anzahl von kleinen Gegnern am Ende kommt, ist dieses somit der Gegner des zweiten Level. Ankommend: Nachdem ein oberer und unterer Teil sich getrennt haben und mit mehreren Lasern auf den Player geschossen haben, werden seitliche Teile herausgefahren. Diese sind mit einem Laserbeam mit dem Hauptkörper verbunden: Dieses dreht sich nun. Hiernach werden weitere Seitenteile abgesprengt und zwei größere Laser kommen zum Vorschein. Diese verfolgen den Gegner: Wenn auch diese abgeschossen wurden taumelt der restliche Hauptteil bis zur finalen Zerstörung:
  19. Hi, warscheinlich hilft dir die Youtube Reihe von Michael Mark weiter:
  20. Kannst du eventuell anstatt den Spieler über das Gelände zu bewegen das Gelände unter dem Spieler bewegen? Damit bleibt der Spieler immer bei Koordinaten Ursprung.
  21. So, nun meine Gegner, welche auf Planetenoberflächen auftauchen: Gegenüber der Credits des ersten Video ist anzumerken, das die ersten beiden Gehner von meinem Arbeitskollegen Werner design wurden. Ich habe das sehr detailierte Modell in Blender aber noch einmal als Low Poly Model nachgezeichnet. Als Hintergrund seht ihr hier mein Level Nummer 9, den Mond. Das Sounddesign ist noch nicht final zusammengestellt. Speziell bei den "Laserdome" muss ich noch nacharbeiten. Ja, mein 11-jähriger Sohn fragte mich auch schon, wieso ich beim "Game Over" zwei englische und eine deutsche Schaltfläche habe - muss ich noch ändern.
  22. Ich denke mir, dass es an "Input.GetButtonDown" liegt. Ich glaube, dass hierbei nur einmal während des einen Frame die Eingabe angenommen wird. Und da nun zwei Eingaben gleichzeitig erfolgen sollen, passiert dieses eventuell nicht innerhalb desselben Frame und die "&&" kommen somit gar nicht zum tragen. Probier einmal "Input.GetKey"
  23. KaBau

    wait / warte

    Hallo @Sascha, müssen bei deinem Code am Ende nich zwei "))" stehen? Derzeit werden 3 Klammern geöffnet und nur eine wieder geschloßen.
  24. KaBau

    wait / warte

    Für Coroutines wurde mir damals in diesem Thema geholfen (besonders der Beitrag von Sascha). Dabei wollte ich aber nicht nur eine Befehl nach dem anderen zeitversetzt ausführen, sondern es sollte innerhalb einer Zeitspanne etwas passieren. Eventuell hilft dir das ja an anderer Stelle weiter. Und ja, ich habe nun 3x hintereinander geantwortet. Lag daran, dass ich zuerst am Tablet war und mir später zu diesem Thema zeitversetzt noch etwas eingefallen ist.
×
×
  • Create New...