• 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

malzbie

Moderators
  • Content count

    4,203
  • Joined

  • Last visited

  • Days Won

    217

malzbie last won the day on March 24

malzbie had the most liked content!

Community Reputation

1,239 Excellent

About malzbie

  • Rank
    Moderator
  • Birthday 10/30/1968

Profile Information

  • Gender
    Male
  • Location
    Kassel, Hessen, Deutschland

Recent Profile Visitors

13,134 profile views
  1. Mein Plan sieht 10 Flipper vor! Der Erste, der den du gespielt hast, wird frei zur Verfügung stehen und wird als Basis für die anderen Flipper da sein. Die anderen Flipper soll man dann als DLC dazukaufen können. Das mit den Federn verstehe ich übrigens. Das liegt aber an der recht geringen Neigung dieses Tisches. Mein Carnival Flipper ist stärker geneigt und da federt es dann auch ganz anders.
  2. Also so wie ich es sehe, hast du da jede Menge Plugins drin, die du alle auch updaten musst. Bei fast allen Meldungen steht da, dass dies oder jenes Obsolete ist. Also veraltet. bei diesen Meldungen funktioniert der alte Code zwar noch, aber du wirst gegängelt das zu ändern. Die allererste Meldung ist aber ein echter Fehler. Aber auch da wird etwas genutzt, was mit V5.5 nicht mehr geht. Auch da solltest du schauen, dass du das Plugin erneuerst. Die ganzen Meldungen ab der Mitte kannst du evtl. beheben, indem du einfach (nachdem du die Plugins aktualisiert hast) alles neu importierst. Rechtsklick auf dein Projektordner und reimport all wählen. Leg los!
  3. Wenn es jetzt nur um Dinge geht, die sich selber nicht verformen, wie Helme oder Rüstungsteile, dann kann man die, genauso wie Waffen, einfach den entsprechenden Bones unterordnen. Schon werden sie bei der Bewegung mit genommen. Bei allen andern Kleidungsstücken, Hemd, Hose usw. muss natürlich auch dieses Mesh mit den Bones gebunden sein. Also da hilf das Unterordnen nichts.
  4. Mit der UI geht das nicht, weil da ist er immer rechteckig. Es könnte aber mit nem Sprite gehen, wo du den Collider ja anpassen kannst. Dann musst du dir aber die Button Events selber zusammen basteln. Hab ich aber noch nicht getestet, ob es sinnvoll ist.
  5. Sodele. Jetzt endlich kann ich mal wieder was zeigen. Mein neuer Flipper ist gut im werden und dieses Mal geht es um das Thema Carnival. Ist nicht viel mehr als ein Ausblick auf das was kommen wird. Schaut:
  6. @sascha: Ah ok. @N_Gnom: Unsere neue Forumsoftware macht es jetzt eigentlich nur so wie es Wordpress und andere Blogsysteme machen. Mit Enter bzw. Return alleine hast du einen neuen Absatz. Mit Shift + Enter bzw. Return Hast du eine neue Zeile, ohne den Abstand zwischen den 2 Zeilen.
  7. Freut mich wenn ich's erklären konnte. Aber das mit den Türmen von Hanoi verstehe ich nicht so recht. Da ist doch nur die Abfrage, ob der zu bewegende Stein denn kleiner ist als der, auf dem ich ablegen will. Und ein leeres Feld ist immer größer als alle anderen Steine. Was kann man denn da rekursiv lösen?
  8. Die 8 Richtungen musst du bei der Dame schon einzeln abfragen. Die Abfrage selber kannst du aber rekursiv machen. Bau die eine Funktion für die Dame, die dir für jede Richtung die mögliche Weite zurück gibt. Je Richtung musst du diese Funktion aufrufen und bekommst dann auch je Richtung die maximale Weite zurück. Dadruch kennst du ja dann alle freien Felder dazwischen. Natürlich musst du noch irgendwie die Abfragefelder begrenzen, damit du nicht ausserhalb des Spielfeldes abfragst. //Aufruf mit annahmewerten Vector2 rechtsHoch = new Vector2(1,1); Vector2 myPosition = new Vector2(0,4); int rechtsHochWeite= Felder(rechtshoch,myPosition); print (rechtsHochWeite); public int Felder(Vector2 richtung Vector2 position){ Vector2 neuesFeld=position+richtung; // hier drunter sollte noch abgefragt werden, ob das neue Feld überhaupt noch innerhalb des Spielfeldes ist. // freies feld gib ne 0 zurück if(feldarray(neuesFeld)==0){ int anzah=1+Felder(richtung,neuesFeld); // selbstaufruf return anzahl; } else{ return 0; } }
  9. Ich will es dir mal am Beispiel der Fakultät versuchen zu erklären. Dort multipliziert man ja alle natürlichen Zahlen von 1 an bis zur Angegebenen. Also bei der Fakultät von 5 würdest du 1*2*3*4*5 rechnen und kämst auf auf das Produkt 120. Hier hast du jetzt 2 Werte, die du für deine Rekursion brauchst. Einmal die 5 welche du deiner rekursiven Berechnungsfunktion übergibst und einmal die 1, welche die kleinste natürliche Zahl für solch eine Berechnung ist. Du hast jetzt in irgendeinem Script solch eine Funktion die du Aufrufst und den Zielwert, z.B. unsere 5, übergibst. Diese Funktion ist jetzt rekursiv und wirderholt sich ständig selbst, bis etwas eingetreten ist, was sie zum Beenden und Übergeben des Ergebnisses bringt. Das hier wäre der Aufrunf: long ergebnis =Fakultaet(5); // hier wird die Funktion aufgerufen und die gewünschte Zahl übergeben. print(ergebnis); // das, was ich zurück bekomme, wird jetzt ausggeben. Die Funktion sähe dann so aus: public long Fakultaet(int wert){ if (wert==1){ // wenn mein Wert 1 ist muss ich aufhören, denn sonst würde der nächste durchlauf mit der 0 sein. return 1; } else{ long ergebnis = wert*Fakultaet(wert-1); // hier rufe ich mich für die Berechnung selber nochmal auf, aber diesmal mit dem wert - 1 return ergebnis; } } Entscheidend ist bei der Rekursion, dass von hinten nach vorne gerechnet wird, denn: Ich rufe die Funktion mit dem Wert 5 auf. In der Funktion wird überprüft ob der Wert 1 ist, und da er es ja jetzt noch nicht ist, ruft sich über else die Funktion selber nocheinmal auf. Diesmal aber mit reduziertem Wert, also der 4. Das Ergebnis wird noch nicht übergeben, denn der Pointer ist jetzt noch nicht da, sondern noch im 2ten Aufruf. Im 2ten Aufruf wird wieder überprüft ob es die 1 ist. Ist es ja nicht, denn es ist die 4 also kommt wieder es zu einen weiteren Selbstaufruf, aber diesmal mit der 3. so geht das weiter, bis der wert nur noch 1 groß ist. Jetzt beginnt die Aufdröselung von hinten nach vorne! Der letzte Aufruf hat erkannt dass wert 1 groß ist und somit wird über return die 1 zurückgegeben. Die 1 bekommt jetzt der Aufruf davor zurück , der selber in der variable wert noch die 2 stehen hatte und rechnet jetzt 1*2. Das Ergebnis (2) wird per return dem Aufruf davor geben. Der hat als eigenen Wert ja die 3 und multipliziert seinen Wert mit der Rückgabe, welches ja die 2 ist. Auch dieses Ergebnis (6) wird dem Aufruf davor übergeben. Auch hier wird der eigene Wert 4 mit dem Rückgabewert 6 multipliziert und das Ergebnis (24) mit return dem Aufruf davor übergeben. Jetzt sind wir an der oberen Ebene angelangt und die Berechnung aus eigenen Wert 5, das ist ja die Zahl gewesen die von dir an die Funktion übergeben wurde, und dem Ergebnis aus dem Selbstaufruf (24) wird jetzt multipliziert und über return deinem Aufruf zurück gegeben, und wird dann per print Befehl in der Konsole ausgegeben. Du siehst jetzt hoffentlich, dass sich eine rekursive Funktion immer so lange selber aufruft, bis ein gewisses Ereignis eintritt, welche erst dann von unten nach oben die Berechnungen ausführt und dem Aufrufenden übergibt. Hast du keine Endbedingung für den Selbstaufruf, wird das so lange weiter gehen, bis der Rechner irgendwann aus Speichermangel oder aber das Programm z.B. StackOverflow bringt. Eine Endbedingung kann alles Mögliche sein, aber kein Zwischenergebnis, da ja noch nichts berechnet wurde. Ein anderes Beispiel wäre das Zählen aller Dateien in allen Verzeichnissen auf der Festplatte oder in einem Ordner. PseudoCode: verzeichnis start =new Verzeichnis("."); // wo soll gezählt werden int ergebnis = ZaehleDateine(start) print (ergebnis); public int ZaehleDateien(verzeichnis start){ int zahl=1; if(start == einVerzeichnis){ // die bedingung für den selbstaufruf alle Dateien in ein Array schieben; for(alle Dateien im Array){ int unterDateien = ZaehleDateien(datei); // selbstaufruf für unterverzeichnis zahl += unterDateien; } } return zahl; } Auch hier bekommst du kein Zwischenergebnis, denn erst wenn alle Selbstaufrufe vom letzten her kommend abgearbeitet sind, wird deinem Aufruf ein Ergebnis zurück gegeben.
  10. Obj sollte auch gehen. Ist quasi der kleinste gemeinsame Nenner.
  11. Ja, vielleicht. Die Jungs sind dran. Ich selber moderiere nur.
  12. Bau die in einem 3d Programm einen kreisrunden Körper und exportiere ihn z.B. als .fbx. In Unity importieren, in die Szene legen und ihm einen "MeshCollider" geben.
  13. @Sunroc Ich habe mir eben mal die Mühe gemacht und deinen Vorstellungsthread überarbeitet, denn du hättest ja nur deine eigenen Beiträge bearbeiten können und das ist ja auch doof. Nun schickets mir aber für heute!
  14. Ich habe vorab schon ein paar neue und angepinte Themen editiert. Aber da wird man weich bei. Es ist geplant, wenn's möglich ist, über ein Automatismus die Umlaute und Sonderzeichen wieder ins reine zu bringen. Ob es möglich ist und wie weit die Vorarbeiten sind, kann ich leider nicht sagen. Da sind die Admins aber dran. Wenn du Lust hast, kannst du ja deine Texte die dir wichtig sind schon mal nachbearbeiten. Und ja, du hast die Infos übersehen!
  15. Willkommen!