• Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Torigas

Members
  • Content count

    162
  • Joined

  • Last visited

Community Reputation

37 Excellent

About Torigas

  • Rank
    Advanced Member
  1. Was steht denn im Log? Im Data Folder sollte ein Log sein.
  2. Das Beispiel verstehe ich nicht so ganz. intrfc auf intrfc zu casten ohne es zu initialisieren? Huh?
  3. Ich stehe total auf UnityEvents: https://docs.unity3d.com/Manual/UnityEvents.html Vielleicht wäre das ja auch was für dich. Einfach Klicky-Bunti im Editor die Verbindung zwischen deinen Objekten bauen. Oder halt im Script dynamisch mit Events arbeiten.
  4. *sternchen*
  5. Beschädigungen und ähnliches kann man prima mit Substance Painter machen: Vielleicht wäre das ja was. Sonst was Sascha geschrieben hat, PBR verwenden. Ich fürchte in Unity gibt es kein "street tool" mit dem man einfach Straßen zeichnen kann, die sich gut an das Terrain anpassen so wie bei der Cryengine. Wenn du also selber den ganzen Weg modellierst und UVMaps könntest du das zum Texturieren z.B. in Substance einladen und dort Beschädigungen einladen. Wenns noch schöner sein soll kannst du natürlich auch alles sculpten und baken. Wichtig wäre halt nur, dass du das PBR ausnutzt und dementsprechend auch die Texturen erstellst oder generierst, die der Rendering Engine sagen, wie sehr die Teile des Models reflektieren und so.
  6. Hast du die Lese/Schreibrechte für die Anwendung vergeben?
  7. Links zu Foren sind eher weniger angebracht. Abhängig vom Betreuer ist es auch relativ egal wie der Code aussieht solange er funktioniert. Du solltest halt auch keinen Code aus dem Forum direkt benutzen. Aber das ist ja eh klar. Ich hab noch keine Bachelorarbeit korrigiert in der eine Danksagung an Stackexchange war. Denke also, dass das nicht gemacht werden sollte. Im Endeffekt solltest du den Kram ja auch selber lösen. Den Code kannst du posten wenn du die Arbeit benotet bekommen hast. Nicht, dass der Betreuer auf die Idee kommt Snippets mal zu googeln und dann hier herausfindet, dass die Schlüsselstellen von anderen kommen. Das wäre unvorteilhaft ;-)
  8. Stimmt, checkField hab ich einfach von oben kopiert jetzt kann man sie auch einfach in der Schleife lassen. Statt aus der Liste zu löschen füge ich einfach etwas nur hinzu, wenn es in die Liste gehört. Auch bei Malzbies Lösung wirst du allerdings die Richtung bestimmen müssen. Dafür kannst du natürlich den Permutationsteil von mir einbauen. Hoffe wir konnten dir helfen? Ich fands auf jeden Fall spannend mal drüber nachzudenken.
  9. int maxX = 7; int maxY = 7; int[] dir={-1,-1,-1,-1,-1,-1,-1,-1}; Position currentPos = //aktuelle Position List<Pair<int,int>> permutations = new List<Pair<int,int>>(); //your function yadda yadda { for(int a = -1; a <=1; a++) { for(int b = -1; b <=1; b++) { if(a==0&&b==0) continue; permutations.add(new Pair(a,b)); } } for(int i = 1; i<MAXDISTANZ; i++) { for(int p = 0;p<permutations.Count; p++) { Pair<int,int> p=permutations[p]; if(dir[p] == -1) dir[p] = checkField(currentPos,i,p.a,p.b); } } } //other function int checkField(Position cp, int i, int xdir, int ydir) { if(cp.x+i*xdir>maxX||cp.x+i*xdir<0) return -2; //stop iterating in this direction if(cp.y+i*ydir>maxY||cp.y+i*ydir<0) return -2; //stop iterating in this direction if(Spielfeld[currentPos.x,currentPos.y+i] == 2) return i; return -1; // keep searching } Eventuell so in der Art?
  10. Ach da hab ich dich falsch verstanden. Dachte irgendwie, dass du das möchtest. Im Nachhinein Quatsch. Klar kann man den Code auch mit mehreren Zählvariablen umbauen und nicht abbrechen lassen... int[] dir={-1,-1,-1,-1,-1,-1,-1,-1}; Position currentPos = //aktuelle Position for(int i = 1; i<MAXDISTANZ; i++) { if(dir[0] == -1) dir[0] = checkField(currentPos,i,0,1); if(dir[1] == -1) dir[1] = checkField(currentPos,i,1,1); if(dir[2] == -1) dir[2] = checkField(currentPos,i,1,0); if(dir[3] == -1) dir[3] = checkField(currentPos,i,1,-1); if(dir[4] == -1) dir[4] = checkField(currentPos,i,0,-1); if(dir[5] == -1) dir[5] = checkField(currentPos,i,-1,-1); if(dir[6] == -1) dir[6] = checkField(currentPos,i,-1,0); if(dir[7] == -1) dir[7] = checkField(currentPos,i,-1,1); } int maxX = 7; int maxY = 7; int checkField(Position cp, int i, int xdir, int ydir) { if(cp.x+i*xdir>maxX||cp.x+i*xdir<0) return -2; //stop iterating in this direction if(cp.y+i*ydir>maxY||cp.y+i*ydir<0) return -2; //stop iterating in this direction if(Spielfeld[currentPos.x,currentPos.y+i] == 2) return i; return -1; // keep searching } Hoffe, dass ich dich jetzt richtig verstanden habe. Das findet in jeder Richtung den nächsten Gegner. Ist natürlich alles andere als schön. Die Rekursive Lösung fand ich schöner. Allerdings bin ich immernoch der Meinung, dass ein Kernel hier auch gut wäre, da er natürlich auf alle Figuren übertragbar wäre.
  11. Du könntest für jede Figur eine List an Feldern speichern an welche die Figur in einem Zug gelangen kann. Diese dann iterieren. Diese Liste ändert sich nur bei Bewegung der Figur. foreach(Field f in possibleFields) { //do your voodoo } Denke das wäre wegen der KI Berechnung ganz sinnig so eine Liste zu speichern. Eventuell geht das auch mit einem hardgecodetem Kernel. Ist ja klar, dass in welche Richtung sich jede Figur bewegen kann. Somit wäre es noch performanter. https://en.wikipedia.org/wiki/Kernel_(image_processing) Was du vorgeschlagen hast ist jetzt Längen/Breitensuche. Bin mir nicht sicher ob sich da mathematisch Unterschiede ergeben. Also ob es wahrscheinlicher ist beim Schach in einer Breitensuche eine "volles" Feld zu finden oder bei einer Längensuche. Ich würde schätzen, dass sich da nicht viel tut Laufzeittechnisch. Um deine Aufgabe mal simpel zu beantworten. Bei einer Dame kannst du folgendes versuchen: Enemy foundEnemy = null; Position currentPos = //aktuelle Position for(int i = 1; i<MAXDISTANZ; i++) { foundEnemy = Spielfeld[currentPos.x,currentPos.y+i];//oben foundEnemy = Spielfeld[currentPos.x+i,currentPos.y+i];//rechts oben foundEnemy = Spielfeld[currentPos.x+i,currentPos.y];//rechts foundEnemy = Spielfeld[currentPos.x+i,currentPos.y-i];//rechts unten foundEnemy = Spielfeld[currentPos.x,currentPos.y-i];//unten foundEnemy = Spielfeld[currentPos.x-i,currentPos.y-i];//unten links foundEnemy = Spielfeld[currentPos.x-i,currentPos.y];//links foundEnemy = Spielfeld[currentPos.x-i,currentPos.y+i];//links oben if(foundEnemy != null) break; } Natürlich unter der Annahme, dass deine Datenstruktur dir nicht um die Ohren fliegt, wenn du außerhalb des Bereichs bist.
  12. Sieht auch richtig gut aus. Gibt es da einen Download von? Ich würde das gern mit der Vive testen.
  13. Cool! Gute Arbeit =) Das Forum sieht schick aus. Danke für die Mühen.

  14. Erstaunlich was so ein Check ausmacht. Danke für die Mühen!