Jump to content
Unity Insider Forum

Der_Stefan_

Members
  • Posts

    34
  • Joined

  • Last visited

  • Days Won

    1

Der_Stefan_ last won the day on November 14 2020

Der_Stefan_ had the most liked content!

About Der_Stefan_

  • Birthday 02/26/1984

Profile Information

  • Gender
    Male
  • Location
    Dortmund

Recent Profile Visitors

372 profile views

Der_Stefan_'s Achievements

Advanced Member

Advanced Member (3/3)

2

Reputation

  1. Hmmm... Also ich hab mir das mal ganz einfach gemacht... Ich hab schlicht und ergreifend das Direct-Licht sich um den Unity-Mittelpunkt drehen lassen. Einfach so, wie sich die Sonne in "echt" eben auch bewegen würde (und ja, ich weiß, dass sich eigentlich die Erde um die Sonne dreht, nicht umgekehrt ). Auf die Rotationszeit angepasst habe ich dann eine Animation erstellt, bei der sich die Lichtfarbe und Intensivität verändert (bläulicher und schwächer in der Nacht, rötlicher am Abend usw. (Fast) kein Code und, für mich, absolut ausreichende Ergebnisse. Mein 24 Stunden-Zyklus dauert dabei 2 Minuten.
  2. Erstmal nur einfach über einen Invoke. public void Update() { if (Input.GetKeyDown (KeyCode.Space)) Invoke ("MoveRow",1); } Weiter kam ich ja noch gar nicht, weil ich den Schritt davor, das Erstellen noch nicht hinbekommen hab. Hab ich mich halt auch noch nicht näher mit beschäftigt, weil ich mir dachte, dass das Problem hier durch den Teil davor verursacht wird... Unity spuckt jedenfalls die folgende Meldung in der Konsole aus (siehe Bild in meinen Beitrag vorher): "Trying to Invoke method: GridClaas.MoveRow couldn't be called."
  3. Ich check`s einfach nicht... seit dem Aufkommen des Problems, bastel ich jetzt seit geschlagenen 2 Wochen nur noch da dran rum und bin nicht einen einzigen Schritt weitergekommen. So langsam kommt da echt der Frust auf und ich muss ich mir wohl oder übel eingestehen, dass ich bei diesem Projekt einfach zu hoch gestapelt habe und das vielleicht einfach noch ein paar Monate liegen lasse, bis ich etwas besser geworden bin... Seit deinem letzten Post, Sascha, kann ich die Klasse gefühlt auswendig runterlaiern, es funktioniert aber dennoch nicht. Auch habe ich in der Zwischenzeit den Code komplett verworfen und versucht von Null ein neues Array selbst zu bauen. Einfach um es besser verstehen zu können. Hat sogar auf Anhieb geklappt. Allerdings konnte ich dadurch noch immer nicht das Grundsätzliche Problems dieses Threads lösen. Wie ich einzelne Reihen/ Spalten identifiziere und gemeinsam und bewege. Wie gesagt, im Bereich des 2D-Array fängt`s schon an (ich hab mal die Probleme und Alternativen als Kommentare in den Code geschrieben: private void Start() { GameObject[,] grid = new GameObject[width, height]; //LabyrinthElement[,] grid = new LabyrinthElement[width, height]; // In der Variante mit dem GameObject wird das Labyrinth zwar aufgebaut, hat aber die Teile haben so keinenVerweis auf den Namen "LabyrinthElement". Du hast ja gesagt, dass ist nur dafür dass das nur dazu da ist, dass nur diese ganz bestimmten Prefabs geladen werden können. Daher... muss das unbedingt sein? for (var y = 0; y < height; y++) //for (int x = 0; x < width; x++) // { for (var x = 0; x < height; x++) //for (int z = 0; z < width; z++) // { var randomPrefab = prefabs[Random.Range(0, prefabs.Length)]; var position = new Vector3(x, 0, y) * elementSize; var randomRot = Quaternion.Euler(0, Random.Range (0, 4 ) * 90, 0); grid[x, y] = Instantiate(randomPrefab, position, randomRot); //Instantiate(randomPrefab, position, randomRot); //Hier andersrum: Wenn ich den Teil "grid[x,y] weglasse, funktioniert es mit dem Namen LabyrinthElement weiter oben und das Labyrinth baut sich ebenfalls auf. Aber die Prefabs werden dann ja nicht Teil des Oberbegriffs "grid" oder...? } } } Mir scheint, dass da irgendwas zu viel bzw. doppelt abgefragt wird und dadurch kollidiert. Aber je nach Fehlermeldung scheint es entweder das "grid" oder das "LabyrinthElement" zu sein. Und bei der Methode MoveRow bekomme ich, wenn ich sie aufrufe nur ganz schlicht nur die Meldung, dass Unity sie nicht laden kann. Keine weitere Erklärung...
  4. @Sasche: Aufbauende Worte 😘 Mit jedem Schritt und jedem Try und Fail wird`s ein kleines Stück selbsverständlicher. Ein schönes Gefühl, muss ich sagen. Ich hab mich jetzt mit einer großen Tasse Kaffee vor den Computer gesetzt und dein Script in einer Klasse zusammengefügt. Die darauffolgende Stunde (fast 1 1/2 sogar) habe ich damit verbracht, mir Zeile für Zeile anzuschauen und zu verstehen, was, was, wie macht oder auslöst. Am meisten überrascht hat mich eigentlich die Zeile ( public void MoveRow(int rowIndex, bool positive ), dass du da Int und Bool direkt in der Void (Methode, oder?) anlegen kannst. Ich dachte bisher, die Benennung dieser MUSS immer im Kopf, bzw. unabhängig von einem Void o.ä. geschehen. Ich kann es ja jetzt noch nicht direkt ausprobieren weil die Klasse noch nicht funktioniert, aber ich gehe davon aus, dass dieser bool z.B. dann auch nur innerhalb dieser Void funktioniert, richtig? Eine Frage habe ich außerdem noch zu den zu ladenden Prefabs: Diese sind mit den eckigen Klammern deklariert ( private GameObject [ ] prefabs = default; ). Auch das kann ich noch nicht ausprobieren, wahrscheinlich wird sich die Frage später von selbst erledigen, aber kann man durch die eckigen Klammern mehrere Objekte deklarieren (in meinem Fall Kurve, Gerade und T-Kreuzung), oder muss ich das später 3 mal setzen und die Klasse per Zufall darauf verweisen lassen? Und - warum ich das Ganze noch nicht ausprobieren kann - über eine Sache stolpere ich noch (ich freue mich unglaublich darüber, dass das tatsächlich die einzige Sache ist, die ich mir nicht herleiten oder erklären kann ): Unity bemängelt, dass das "LabyrinthElement" aus dem Kopf ( private LabyrinthElement[ , ] grid; ) nicht gefunden werden kann. Meinem Verständnis nach sollte das doch aber als Oberbegriff für die jeweiligen Labyrinth-Bausteine dienen, welche in der Start-Funktion mit dieser Bezeichnung instanziert werden. Will sagen, kein haptisches Objekt, sondern lediglich ein Name um sich darauf beziehen zu können. Daher kann ich ja auch nichts verknüpfen oder irgendwohin verweisen, oder? Ich habe versucht zu ergründen (Google, YouTube) ob dennoch irgendwo irgendein Verweis fehlt. Jedoch wurde bei CodeMonkey und Co nirgends Prefabs in die aufgesetzten Grids geladen, so dass dieser Punkt nirgends beschrieben ist (oder ich hab zumindest nichts gefunden). Auch mit diversen möglichen Versuchen das zu ändern und damit zu kordieren bin ich auf keinen grünen Zweig gekommen. Daher muss ich dich leider doch noch mal mit der Bitte um Hilfe nerven .. Lieben Gruß Der Stefan
  5. Okay... wow... Ganz lieben Dank dass du dir die Mühe gemacht hast und mir das so aufzuschlüsseln. Und du sagst, das ist einfacher ?! Ayayay... na ja gut, ich hab's mir so ausgesucht und jetzt muss ich da durch Ab heute ist Lockdown, jetzt habe ich erst recht die Abende wieder frei um daran rumzubasteln. Ich bin selber sehr gespannt, ob ich das so umgesetzt bekomme. Jetzt gerade verspüre ich gerade doch einen ziemlichen Respept vor der Aufgabe So oder so, ich gebe Bescheid was draus wird, bzw. wenn (nicht falls) noch offene Fragen bestehen
  6. Guten Morgen Sascha, danke dir für deine Tipps. Ich bin für jeden Tipp dankbar. Mit Grids hatte ich bisher noch nicht das Vergnügen und Arrays kenne ich bisher nur als lineare Liste. Sprich, "bitte tue xy mit allen Dingen, die in dieser Liste stehen". Mein Gedankengang dazu war, dass ich dann für jede Reihe und jede Spalte entsprechende und sich überschneidende Listen benötigen würde. Und da sich aber die "Inhalte", so nenne ich es jetzt mal ja ständig ändern, müsste ich bei jedem Schritt mehrere Objekte aus mehreren Listen austragen und in andere eintragen lassen. Gleichzeitig müssten sie aber in der sich bewegenden Reihe selbst bleiben. Und als dann noch Überlegenden zu dem hinten rausfallenden Teil und dem vorne zusätzlich eingesetzten Teil hinzukamen, schwirrte mir langsam schon beim Gedankenspiel der Kopf, so dass mir ein direktes Auswählen der Reihe ohne "Sammlung" deren Inhalte als wesentlich einfacher erschien. Daher die Idee mit dem RayCast. Wenn du aber sagst, mit Grids und Arrays zu arbeiten würde in diesem Fall doch wesentlich besser, einfacher und Fehler-unanfälliger funktionieren, werde ich da doch mal nach Suchen und mich entsprechend einlesen. Ich habe da jetzt natürlich noch nicht nach gesucht. Weißt du aus dem Stehgreif ob hier kürzlich schon mal jemand mit Grids zu tun hatte bzw. kannst du mir eine passende Hilfestellung empfehlen? Gibt dafür ja sicherlich auch diverse Themen hier oder Unity-Tuts. Wenn nicht, nicht schlimm. Ich find schon was Nein, an sich brauche ich die RBs nicht, das ist korrekt. Aber ich habe die Bewegung der Segmente anders nicht ansteuern können. Der RayCast hat zwar erkannt dass da ein GameObject im Weg ist, aber nichts damit gemacht. Die Bewegung kam erst mit dem Ansprechen eines RB in's Spiel. Aber gut, wenn das mit dem Array bzw. dem Grid funktioniert, dann dürfte sich ja wahrscheinlich auch das Thema RB erledigt haben...
  7. Guten Abend ihr Lieben, ich stocke mal wieder und seh' das Land nicht... Ich arbeite gerade an einer Art 3D-Umsetzung des Spieleklassikers Das verrückte Labyrinth. Soll im Grunde genauso funktionieren, sprich mit den sich bewegenden Wegstücken in einer Reihe, nur mit dem Unterschied, dass man im 3D-Umfeld durch`s Labyrinth tappst und sich die Wände von alleine bewegen. Meine Idee zur Umsetzung dabei war, dass ein GameObject um`s Spielfeld herum per Zufallsprinzip auf Wegpunkten hält und die jeweilige Reihe per Raycast auswählt und bewegt. An genau dieser Stelle stocke ich aber an gleich zwei Stellen: Zum einen wählt der RayCast nur das erste Teil in der Reihe aus. Bekomme ich es wohl irgendwie hin, dass der Strahl durch die ganze Reihe strahlt und dabei alle 7 Objekte gleichzeitig anwählt? Und zum anderen scheint irgendwas mit der Bewegungssteuerung krude zu sein. Angegeben ist, dass das Objekt sich um 12 Zähler, also einmal um seine eigene Länge nach vorne schieben soll. Statt dessen sind es aber manchmal 3, mal 6 oder auch 18 Zähler. Seltsamerweise aber immer glatte und durch 3 teilbare Zahlen... (im Bild unten sind es auch 6 statt 12). Hat jemand eine Idee woran das liegen könnte? Hier noch der Script-Code meines Rays. Die Wegpunkte habe ich noch nicht korrekt angesetzt, zum testen löse ich den RayCast noch manuell über die Space-Taste aus. Überhaupt bin ich noch am tüfteln, wie ich das ganze Konstrukt überhaupt wie gewünscht umgesetzt bekomme. Wesentlich mehr Code beinhaltet die Klasse daher auch nicht. if (Input.GetKeyDown (KeyCode.Space)) { rowmove = true; } Vector3 origin = transform.position; Vector3 direction = transform.forward; Debug.DrawRay (origin, direction *200f, Color.red); Ray ray = new Ray (origin, direction); if (Physics.Raycast(ray, out RaycastHit raycastHit) && rowmove) { raycastHit.collider.GetComponent<Rigidbody>().transform.position += new Vector3(12f, 0.0f, 0.0f); Debug.Log ("RayShoot-Info"); rowmove = false; } Besten Dank und Gruß Der Stefan
  8. Ach schön. Ich könnt` dich knutschen, Jomnitech Deine zweite Variante, die mit dem public Static Bool hat ohne Probleme funktioniert, genau so wollte ich es haben. Ganz lieben Dank für die Hilfe
  9. Ja, genau so war ja auch mein Ansatz (siehe Scripte oben). Ich hab‘s nur einfach nicht auf‘s Pferd geschafft. Dein Code sieht jetzt nicht so aus, als dass ich da GamObjekte Verknüpfen muss, oder? Das wäre doch schon mal ein Schritt nach vorne. heute schaffe ich es nicht mehr, aber ich versuche das morgen mal einzubauen. Ich danke dir aber schon mal sehr
  10. Also wenn ich dich richtig verstanden habe, dann meine ich das genau andersrum 😅 Ich möchte nicht auf die Funktion eines Prefabs/einer Instanz verlinken, von denen will ich nichts. Vielmehr möchte ich, dass die Instanz von einem bestehenden Objekt etwas Abfragen soll. ich kann morgen noch mal bessere Bilder posten. Das Ganze ist ein Konfigurator. Man wählt nach Baukastenprinzip verschiedene Objekte, deren Instanzen dann auf der Bildfläche erscheinen und über die Pfeiltasten arrangiert werden können. Und wie gesagt, die Instanzen sollen dann prüfen wo die Kamera steht (vorne oder hinten) und sich entsprechend umdrehen (grob gesprochen). Die sich drehende Kamera ist die ganze Zeit über da.
  11. Hallo Zusammen, ich habe mal wieder ein Problem, bei dem ich trotz ewiger Google und YouTube-Recherche einfach nicht alleine weiterkomme... Und zwar möchte ich in einem Script (auf Objekt B ) einen Bool-Value aus einem anderen Script (auf Objekt A) übernehmen. Sprich wenn Objekt A XY gemacht hat, soll Objekt B YX machen. Ganz konkret dreht sich ein GameObjekt mit der Kamera, diversen Lampen, etc als Children. um einen zylindrischen Sockel auf dem sich die Figuren bewegen. Sobald sich das Kamera-Objekt halb um den Zylinder gedreht hat, sprich die 180 Grad-Marke erreicht hat, wird ein entsprechender Bool-Wert über einen Collider eingestellt (Backside = true). Die Figuren auf dem Zylinder (nebst anderen Dingen) sollen den neuen Bool-Wert erhalten und die Steuerungsparameter umkehren, sich umdrehen usw. Soweit so gut, ich weiß auch theoretisch wie ich das machen muss. Ich stocke nun an dem Punkt, bei dem ich ScriptA, bzw. das entsprechende Objekt davon, den Figuren, wo das Script B liegt, zuordnen muss. Das klappt wunderbar, solange sich das GameObject in der Szene befindet ist. Allerdings sind die Figuren Prefab-Klone, welche erst während des laufenden Spiels gespawnt werden. Und Unity erlaubt mir nicht mein Objekt A in den passenden Slot im Prefab zu ziehen. Habt ihr eine Idee wo das Problem liegt? Ist das generell nicht möglich? Und wie kann ich das umgehen? In den meisten Internet-Beiträgen geht es a) in erster Linie darum einen Bool-Wert aus einem anderen Script heraus zu verändern. Ich möchte ihn aber nur passiv "lesen". Ich suche nur etwas ganz einfaches, dass ich meinen Prefabs sagen kann "Wenn ihr im Spiel seid, achtet bitte auf das Script A!" Und b) ist immer die Bedingung eines Verweises auf das jeweils andere Objekt - Was ich hier ja nicht machen kann. Hier noch ein bisschen Bildmaterial: Zu den Scriptauszügen: "Backside" ist das Script welches dem Kamera-Setting anhängt und die Drehung erkennt. "Cubemovement" - logisch - ist für die Bewegungssteuerung der Instantiates. Es kämen theoretisch noch weitere Klassen dazu die den Bool-Value benötigen, aber das bekomme ich ja wohl (hoffentlich) adaptiert, sobald ich erstmal überhaupt zu einer Lösung gelangt bin... Ich danke euch schon mal im Voraus.
  12. Oh... Das ist dann jetzt wohl der Twist-plot... Also... zumindest für mich Aber auf jeden Fall eine Aussage, mit der man arbeiten kann. Wenn man sowas weiß, weiß man worauf man achten muss
  13. Hmmm... Okay. (ich glaube) ich verstehe das... ( mehr oder weniger... ) Aber wenn du sagst, dass die Variablen zwar einem in Java geschriebenen Code sehr ähnlich sind aber tatsächlich doch in C# gescriptet werden, wundere ich mich dass ich das so oft im Netz lese. Ist es denn grundsätzlich möglich die Scripte in Unity in Java statt in C# zu schreiben?
  14. Guten Morgen Sascha, zu dieser dritten Variante habe ich mal eine Frage: Im Zuge meiner Recherchen und Suchen danach wie ich was, wie umsetzen kann, bin ich immer mal wieder über diese Variablen "var" gestoßen. Ich habe mittlerweile gelernt, dass die aus dem JavaScript kommen und sich Java nicht unbedingt immer mit C# verstehen. Die Frage ist jetzt, wenn das also ein gewisses Problempotential bietet und geplante Abläufe trotz richtigen Code-Teilen einfach nicht funktionieren, warum mischt man dann überhaupt Java und C# (Also... innerhalb einer Anwednung, nicht innerhalb eines Scriptes versteht sich)? Bietet das irgendwelche Vorteile? Kann Java Dinge, die C# nicht kann oder so? Oder ist das schlicht und einfach persönliches gusto? PS: Mein Problem mit den Lampen habe ich gestern Abend übrigens noch komplett gelöst bekommen. Kleiner Fehler im Script, schnell gefunden, alles cool, Stefan glücklich. Ich habe jetzt quasi perfekt gesteuert die Lampen an
  15. Hach... Hätte auch zu schön sein können -.- Mit dem vereinfachten Test-Script funktioniert es tadellos (Wuhu ), beim kompletten Script funktioniert das komplette ohne die Angabe von Fehlermeldungen einfach gar nicht... Hmmm... Na ja. Jetzt habe ich aber zumindest erstmal einen funktionierenden Ansatz und begebe mich auf Fehlersuche. Erstmal muss ich jetzt aber vor die Tür Schönen Sonntag!
×
×
  • Create New...