Jump to content
Unity Insider Forum

Prayer90

Members
  • Content Count

    16
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Prayer90

  • Rank
    Member
  • Birthday 05/26/1990

Contact Methods

  • Website URL
    www.bdfg-chemnitz.de

Recent Profile Visitors

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

  1. Hab mich nun doch dazu entschieden das Ganze etwas zu vereinfachen. Es gibt nun keine halben Grid Felder mehr. Damit kann man nun nur noch direkt angrenzend an alle vier Seiten bauen. Vielen Dank für alle hilfreichen Tipps hier. Dictionary in Kombination mit dem Vector2 als Key wurde erfolgreich umgesetzt:D. Ich wollte das Ergebnis nur gerne nochmal anhängen, da ich mich freue, dass es so schön funktioniert:)
  2. Vermutlich habe ich zu viele Jahre im 2D Bereich mit dem GM8 verbracht. An Denkweisen wie das Arbeiten mit Vectoren und wofür ich sie verwende muss ich mich erstmal gewöhnen:D
  3. In dem Fall ist das eigentlich nicht mehr notwenig. Mein Grid besteht eigentlich nur aus int's die "vor Level beginn" mein Terrain abstecken. Über zwei Schleifen werden alle Zellen ausgelesen und dementsprechend Objekte platziert. Danach nutze ich es nur noch um "bebaubare" Bereiche festzulegen. Die Überlegung das Ganze zu erweitern um direkt Objekte darin zu speichern ist allerdings eine Überlegung Wert. Daran habe ich ehrlich gesagt noch gar nicht gedacht😀
  4. Dankeschön:), das Dictionary scheint für mich als Lösungsansatz wirklich zu funktionieren. Als Key verwende ich nun einen String der eine Kombination aus der x-Koordinate einem Sonderzeichen und der Y-Koordinate besteht. Über das Anpassen der Koordinaten kann ich so gezielt umliegende GameObjekte ansprechen. Bzw. überprüfen, ob diese überhaupt vorhanden sind.
  5. Schade, hätten nicht erwartet, dass das so kompliziert zu lösen ist. Aber vermutlich ist mein Ansatz an dieser Stelle auch einfach nicht der Richtige. Es ist etwas schwer zu erklären, aber im Prinzip geht es um Folgendes: Ich habe ein gridbasiertes Spielfeld. Der Spieler hat die Möglichkeit auf diesem Grid Mauern zu platzieren, die sich automatisch zueinander ausrichten sollen. (Schritt 1) Bezogen auf das Grid haben alle Mauern eine Grundfläche von 2x2 Feldern. Beim Platzieren eines neuen Mauersegments, sollen bereits bestehende, direkt angrenzende Mauern einen Impuls bekommen, das nebenan etwas Neues angrenzt. Der Impuls beinhaltet: "hey... Da grenzt was an" und "hey... die Nachbarmauer befindet sich an folgender Position um mich herum". (Schritt 2) Am Ende soll eine durchgehende Mauer entstehen die sich Gridsegment für Gridsegment in ihrer Richtung anpasst. (Schritt 3) Meine Idee zur Umsetzung: war es ein Prefab zu bauen (s.Anhang), das aus einem leeren Gameobjekt (mein Elternobjekt) besteht, was die eigentliche Position im Grid abfragt und ein Zeichen gibt, kann ich an der gewünschten Position bauen oder nicht (bis hier hin funktioniert das Ganze schon). Zusätzlich enthält das Elternobjekt 8 Childobjekte an den Ecken jeder GridZelle (Anhang rot). Jedes besitzt eine eigene ID. Anhand dieser ID, soll die Information der Position, direkt angrenzender Mauersegmente geliefert werden. Beim Platzieren eines neuen Mauersegments liegen diese Childobjekte (pink) dann genau übereinander. An dieser Stelle dachte ich, ich kann eine Suche mithilfe der Position des Objektes starten. Aber scheinbar muss ich dieses via Collider realisieren. Für das, was ich vorhabe, brauche ich die Information der ID aller kollidierenden Childobjekte (pink). Somit könnte ich anschließend den Aufbau der Mauersegmente bestimmen. Mit Physics.OverlapSphere habe ich gestern schon ein wenig probiert, bin aber noch zu keinem brauchbaren Ergebnis gekommen. Ich habe immer nur das Elternobjekt des Prefab gefunden. Leider nicht die gewünschte Information der Childobjekte.
  6. Hallo zusammen, Ich möchte von einem Gameobjekt auf ein anderes zugreifen. Das GameObjekt kann häufiger in der Szene vorhanden sein und muss sich bei der Suche selbst ausschließen. Ich kenne von dem anderen Objekt die genaue transform.position. Kann man damit irgendwie eine ich nenne es mal "GameObjekt = FindFromPosition(x, y);" Funktion basteln?
  7. Das erstellen von extra Texturen würde ich gerne vermeiden. Das wird sonst schnell unübersichtlich. Bei 4 Terrains wären das zu viele Möglichkeiten der Übergänge die dabei entstehen. Den Shaderansatz werde ich mir mal in Ruhe ansehen, Dankeschön dafür:)
  8. Das Ganze ist statisch und wird nur beim Generieren der Welt benötigt. Ich versuche eigentlich etwas was ich vor Jahren mal im Game Maker 8 gebaut habe in Unity in 3D nachzubauen. Der Ablauf ist im Prinzip wie folgt: Es wird ein 2D Grid erzeugt. Anhand der Werte im Grid wird das Spielfeld generiert. Jeder Grid-Wert steht dabei für ein anderes Objekt. Die Objekte wiederum richten sich anhand der umliegenden Felder selbstständig aus. Die Grundfläche des Spielfeldes besteht am Ende komplett aus Würfeln (s.Anhang). Mit einem zweiten Grid könnte man verschiedene Terraintypen übereinanderlegen. Winter auf Gras, Wüste auf Gras etc. Um die Grenzen etwas aufzuhübschen wäre es notwendig an dieser Stellen die Texturen zu überlagern. Folgendes Beispiel sollte das Ganze nochmal verdeutlichen: Ohne Überlagerung: etwa bei 1.30 min https://www.youtube.com/watch?v=wDN5OgfjFhE Mit Überlagerung: etwa bei 1.34 min https://www.youtube.com/watch?v=m_qJh1L33-M Damals haben wir das Ganze in 2D aufgebaut und konnten einfach Tiles aus verschiedenen Tielsets beliebig übereinander Stapeln. Für die Umsetzung mit 3D Elementen habe ich allerdings noch gar keine Idee wie das funktionieren könnte.🙄
  9. Hallo zusammen, Ich habe mal wieder eine Frage zum allgemeinen Vorgehen. Ist es möglich in Unity auf ein Mesh mit UV Koordinaten (der Einfachheit halber z.B. bei einem Würfel) auf eine Seite des Würfels, per Script, eine zusätzliche Textur auf die eigentliche textur zu packen? So könnte man zum Beispiel Übergänge verschiedener Gebiete darstellen. Die Grundtextur stellt z.B Gras dar und ich möchte im Nachgang noch auf einigen Stellen z.B Schnee platzieren. Das Gras soll dabei stellenweise aber noch zu sehen sein. Gibt's dazu ein Stichwort über das ich mich schlau machen kann? Am liebsten wäre es mir wenn ich alle Texturen in einer Tilemap zusammenfassen kann. LG Prayer90
  10. Felsen10 bis 13 sind die Begrenzung der Außenränder die braungraue Reihe auf dem Bild. Diese werden im oberen Teil des Codes auch Ordnungsgemäß gesetzt. Der Fall (3x true) tritt daher mehrfach auf. Das ist ja das komische an der Sache.
  11. Ok, das mit der Grid-Übergabe habe ich hinbekommen, Dankeschön. Mittlerweile kann ich analog dem obigen Video ein Grid erzeugen, dieses wie ich es brauche mit Werten füllen. Anschließend wird jede Zelle im Grid ausgelesen und entsprechend dem Wert der Zelle, ein Objekt erzeugt. Das erzeugte Objekt bekommt das Grid übergeben und soll sich anhand der umliegenden Zellen (Werte) ausrichten (s. Anhang). Für jede Richtung (16 Möglichkeiten) hat das Objekt ein separates Mesh. Es werden immer die Zellen nach oben, links, unten und rechts angeschaut, wenn ein entsprechendes Feld angrenzt, dann wird ein bool auf true gesetzt. Je nach Auswertungsergebnis wird der entsprechende Mesh Renderer aktiviert. //Auswertung------------------------------------------------------------- //4 mal true--------------------- //Viereck if (oben == true && rechts == true && unten == true && links == true) {felsen16.GetComponent<MeshRenderer>().enabled = true;} //3 mal--------------------- //oben if (oben == false && rechts == true && unten == true && links == true) { felsen12.GetComponent<MeshRenderer>().enabled = true; } //rechts if (oben == true && rechts == false && unten == true && links == true) { felsen13.GetComponent<MeshRenderer>().enabled = true; } //unten if (oben == true && rechts == true && unten == false && links == true) {felsen10.GetComponent<MeshRenderer>().enabled = true;} //links if (oben == true && rechts == true && unten == true && links == false) { felsen11.GetComponent<MeshRenderer>().enabled = true; } Das funktioniert bis dahin ganz gut (Außenbegrenzung im Anhang). Sowie allerdings mehr als zwei der if Conditions false sind. Bekomme ich eine Fehlermeldung: UnassignedReferenceException: The variable felsen11 of TestGrid has not been assigned //2 mal--------------------- if (oben == false && rechts == false && unten == true && links == true) { felsen11.GetComponent<MeshRenderer>().enabled = true; } Das verstehe ich allerdings nicht, "felsen11" benutzte ich ja in der Abfrage darüber auch und da funktioniert es. 🤔 Kann mir jemand erklären wie der Fehler zustande kommt? Ich stehe gerade völlig auf dem Schlauch.
  12. Grundlegend funktioniert das ganze schonmal. Ich kann mithilfe des Skriptes ein beliebiges Grid erzeugen und innerhalb dessen Werte ändern. Wie kann ich jetzt möglichst einfach, von anderen Objekten auf das erzeugte Gitter zugreifen?
  13. Ich danke euch beiden für die Antworten, Das Video hat sehr geholfen, ich denke das ist ein Ansatz, mit dem ich weiter arbeiten kann:) Lg Prayer90
  14. Hallo zusammen, ich stehe noch ganz am Anfang mit meinen Unity und C# Kenntnissen, daher entschuldige ich mich schonmal vorab für meine unqualifizierten Fragen. Im Moment versuche ich ein Spiel nachzubauen, was ich früher mal im GM 8 gebaut hatte. Es geht um eine Grid basierte Tower Defense mit zufällig generierten Maps. Die Umgebung soll vorab, in einem auf Zahlen basierten Gitter generiert werden. Dieses wird im zweiten Schritt Zelle für Zelle ausgewertet. Je nach Zellwert werden dann verschiedene Objekte generiert. Meine Frage: Auf welche Art und Weise erstelle ich am besten das Zahlengrid? Zellen müssen per Koordinate ansprechbar und bearbeitbar sein Im GM 8 gab es dafür extra eine Grid Funktionen. Was ich bis jetzt gelesen hatte, kann ich in Unity entweder mit Listen oder mit Arrays arbeiten oder gibts noch eine Alternative? Ich wollte einfach mal horchen wie Ihr Profis in einem solchen Fall vorgehen würdet. Lg Prayer90
  15. Hallo zusammen, ich mache gerade meine ersten Gehversuche mit Unity im 3D Bereich und bin ziemlich begeistert. Nun bin ich gerade dabei mir die ersten Objekte aus Blender zu importieren und dabei kamen bei mir die ersten Fragen auf: Wenn ich eine Blenderdatei importiere, die mehr als ein Mesh enthält, wird mir diese als ein Objekt in Unity angezeigt. Öffnet man das Objekt in Unity, enthält es neben den aus Blender übergebenen Materialeinstellungen auch zwei Mesh's. Kann ich diese irgendwie separat per Code ansprechen und Animieren oder sollte man gleich lieber 2 Objekte in Unity anlegen? Beispiel Windmühle: muss ich das Gebäude und das Windradrad als einzelne Objekte importieren, oder kann ich diese als ein Objekt mit 2 Meshes importieren und auf diese später per Script zugreifen damit sich z.B. das Windrad dreht? Wenn ich mit Blender Materialien übergebe, kann ich diese irgendwie aus dem Objekt herauslösen? Ich möchte gern von Unity generierte Materialien verwenden. Irgendwie erscheinen mir die in der Fbx gespeicherten Materialien aus Blender dann als Speicherplatzverschwendung, oder spielt das keine Rolle? Ganz um die Definition der Materialen in Blender kommt man ja nicht herum, um überhaupt die Fläche der einzelnen Materialien zuzuordnen? Lg Prayer90
×
×
  • Create New...