Jump to content
Unity Insider Forum
  • 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

HeadWorker

Members
  • Content count

    25
  • Joined

  • Last visited

Community Reputation

10 Gut

About HeadWorker

  • Rank
    Member

Recent Profile Visitors

582 profile views
  1. Handlungsscript

    Kenn ich mich nicht mit aus, benutze immer nur selbst geschriebene Controller / CameraScripts.
  2. Handlungsscript

    Ist dass während der Cutscenes? Dann versuch mal folgendes: Verteile in deiner Scene GameObjects (empty) wo sich die Camera befinden soll (also eine Art Sammlung von CameraPfaden (Positionen, Rotationen), die dann über das Script in eine Liste von Vector3s überführt werden. Während der Cutscenes wird die Camera dann an diese Punkten fixiert.
  3. Anfänger Unterobject auswählen C#

    Für dein kleines Problem: Kommt darauf an ob 2D/3D, alle auswählbaren Objekte müssen Collider haben, und eine Script, über die Methode OnMouseUpAsButton() kann man z.B. Code ausführen, wenn der User auf das entsprechende Objekt geklickt hat. Davon unabhängig mach mal bitte alle Tutorials auf der Unity-Seite. Nicht bös gemeint, aber die sind echt gut, und danach bist du definitiv schlauer. Dann noch die Script-Refenrence dazu, dann bist du ganz schnell beim Level-Up und darfst bei Scripting und Editor-Skill Fähigkeitspunkte verteilen. Attribute Speed und General Concept/Overwiev bekommen ebenfalls +1.
  4. Handlungsscript

    Wenn ich jetzt richtig liege, dann also als Cutscene-Klasse? Das als Interaction-Klasse zu machen, würde imho am Ziel vorbeigehen, da die Player-Interaktion (z.B. Klick) eine einfache Sache ist, die keine eigenen Klasse haben muss, die Cutscenes aber schon eher. Das ist ne gute Möglichkeit, das einzige Problem was ich da sehe, sind die Referenzen zu den handelnden Personen... Vielleicht solltest du in einem Cutscene-Manager (am einfachsten Singleton) eine statische Liste mit Referenzen zu allen Charakteren haben und zuweisen. Dann baust du dein Cutscene Object, mit verschiedenen Konstruktoren (je nach dem wieviele Personen beteiligt sind). Jede Cutscene hat dann einen internen Wert für Dauer, eine Liste mit den Referenzen zu den beteiligten Charakteren (diese haben Ihre eigenen Animationen, die nicht innerhalb der Cutscene gespeichert werden sollten). Die ausführende Coroutine sitzt dann im Manager-Script und bekommt die Daten der Cutscenes aus den einzelenen Cutscene Klassen. Ein hilfreicher Link hierzu : http://answers.unity3d.com/questions/161084/coroutine-without-monobehaviour.html Auf der anderen Seite ist dein erstes Gefühl nicht falsch gewesen, die Cutscenes mit einer Art Timeline zu organisieren wie in einem Film also z.B. eine Textdatei << 00:51 Marvin, Augusta, Cutscene Streit 01:56 Augusta erschlägt Marvin mit einer Küchenrolle >> Das würde allerdings erfordern aus deinem Storyboard heraus Befehle in Unity einzuspeisen, die dort eingelesen und interpretiert werden können. Da bin ich selber dran, aber noch nicht so weit. Das geht dann in Richtung Data Handling (JSON, Scriptable Object etc sind die Möglichkeiten) Ist jetzt ne kleine Zwickmühle: fängst du hardcoded (also leichter) an, wird das schnell unübersichtlich, ist aber erstmal realitischer fertigzustellen. Fängst du direkt mit Data-Management an, musst du dich die nächsten Monate hinsetzen und üben (dauert, zumindest bei mir), hast dann aber was sehr wertvolles gelernt (braucht man praktisch immer, selbst wenn es ein Platformer ist, und der Spieler hat 3 verschiedene Waffen. Wenn man die über eine vernüftige Data-Lösung eingebaut hat, kann man alles sehr komfortabel erweitern bzw. ändern). Ist auf der anderen Seite aber auch oft overkill Alles nicht so einfach, vielleicht hat noch jemand einen Tipp für dich, es gibt bestimmt noch Lösungen an die ich nicht denke. Ansonsten musst du eine von den 2 Möglichkeiten nehmen, oder Plan B Plan B: ein anderes Spiel. Klingt erstmal krass einfach aufzuhören, aber nach meiner Erfahrung ist es besser erstmal was weniger aufwendiges zu machen. Diese Zeile in 34512 Variationen wirst du auf allen GameDev-Seiten lesen Du musst nicht unbedingt Pong machen (gähn) aber irgendwas nicht so komplexes hat den Vorteil, dass es fertig wird, und dann kann man von da aus weitermachen. Will dich nicht entmutigen, letztendlich musst du das selber wissen.
  5. Handlungsscript

    Dein Ansatz ist (für mich) irgendwie verwirrend... Warum eine Textdatei? Ohne genau zu wissen, wo du hinwillst, würde ich für dein aktuelles Problem so vorgehen : Die Personen müssen mit der Maus auswählbar sein -> Collider müssen sein. Du möchtest eine Art Cutscene abspielen -> Wir brauchen Animationen und Coroutines (Geht auch anders, sind aber toll ) Kleiner Aufbau: Art (Models, Texturen, Audio, Sprechblasen etc. ) sollten von dir schon so angeordnet sein, wie du dir das vorstellst. Alle Personen bzw. Dinge, mit denen per Maus interagiert werden soll, sollten einen passenden Collider haben. Dann brauchst du noch diese (hier sehr vereinfachten ) Scripte: 1. Auf den Objekten, mit denen interagiert werden kann: // Klasse CanBeClickedToInteract void OnMouseUpAsButton() { InteractionControl.GetInstance().SomebodyWasClicked(gameObject.name); } Dann noch (eine von unzähligen Möglichkeiten) ein zentraler Interaktionsmanager, der z.B. auf der Camera sitzt. // Klasse InteractionControl //Singleton ---------------------------------- static InteractionControl instance; public static InteractionControl GetInstance() {return instance;} void Awake() { instance = this;} ------------------------------------ GameObject Person1; GameObject Person2; GameObject Person3; bool InCutscene // Ich mag keine Strings, machen wir hier aber der Einfachheit halber, spätestens wenns mehr als 3 sind wird das sehr unübersichtlich und fehleranfällig. void Start() { Person1 = GameObject.Find("Hans"); Person2 = GameObject.Find("Ute"); usw. // GameObject.Find ist subobtimal, kann man aber 1mal in Start gut machen. } public void SomebodyWasClicked(string personName) { // Schauen ob wir schon in der CutScene sind if (!InCutscene) { StartCoroutine("PlayCutscene" + personName()); } } IEnumerator PlayCutscenePerson1() { InCutScene = true; // Beispiel CutScene // wenn du Animationen abspielen willst, brauchst du natürlich auch einen Animator auf den Personen. Hans.GetComponent<Animator>().SetTrigger("Talk") // Beispiel // Audio starten...etc. yield return new WaitForSeconds(Cutscene Länge) InCutscene = false; } // für die anderen Personen natürlich auch... 1. Die Formatierung ist grauenvoll, ich sehe aber keine Möglichkeit, dass jetzt und hier zu lösen^^ 2. Der Ansatz ist subobtimal, aber ein Anfang, damit du ungefähr weisst, wie man so was machen könnte. 3. Wirst du (auch wenn du wirklich so was machen wolltest) Fragen haben, ich denke ich bin auch später noch mal da
  6. 2D Steuerung mit Rigidbody (kein Character Controller)

    Alles klar, ich weiß nicht ob dass für dich eine Rolle spielt, aber wenn du MoveSpeed definierst, könntest du den Wert auch in FixedUpdate nutzen^^
  7. 2D Steuerung mit Rigidbody (kein Character Controller)

    Rigidbody 2D oder? Stell mal Drag / Angular Drag beim Rigidbody auf 5-10 um das Gleiten zu unterbinden. Dann müsstest du die Kräfte nur noch (je nach gewählter Masse) anpassen. Einfacher ist aber direkt über velocity zu gehen so ala Vector3 AxisInput; float MoveSpeed = 4f; void Update() { AxisInput = new Vector3(Input.GetAxis("Horizontal"),Input.GetAxis("Vertical"),0); } void FixedUpdate() { rigidbody2D.velocity = AxisInput*MoveSpeed; } Code ist ungetestet, sollte aber bis auf Typos laufen. Springen musst du dann selber einbauen Wie schon gesagt wurde, rigidbody auf FixedAngle einstellen und MoveSpeed nach deinen Wünschen anpassen, dann sollte das laufen.
  8. Player Spaceship Serialization

    Eine Alternative (kostet allerdings Zeit zum Einarbeiten) wäre die Realisierung mit Scriptable Object, die unter anderem zu dem von dir gewünschten Zweck da sind (Sind Monobehaviour-Datencontainer). Ich versuche da gerade selbst einzusteigen, bin also noch nicht in der Lage, dir eine Implementierung vorzuschlagen. Vom Konzept her: in dem Scriptable Object z.B. der Ship-Klasse werden die Felder für alle tatsächlichen Objekte [Chassis, Engine, Guns ..] gefüllt und hinterlegt, und dann bei Spielstart aus Prefabs instanziiert.
  9. InGame Strassen oder Mauern bauen.

    Swat weiß noch nicht, dass es um dynamischen (In-Game) Levelbau geht. Also dass als Mesh zu erzeugen ist noch mal eine Spur schwieriger. All diese nervigen Arrays von Punkten usw. Es hätte den Vorteil, dass ein einzelnes Mesh performancemäßig günstiger ist, aber die Implementierung ist meiner Meinung nach viele schwieriger. Wenn du nur gerade Straßen bauen möchtest, kann das sogar recht einfach sein. Einfach wie oben beschrieben den Mausweg abfragen, dabei transparente (z.b grüne) Versionenen deines Prefabs (das sollte es sein) anzeigen und bei MouseUp bauen. Die schnellste und einfachste Variante ist halt ein einzelnes Straßenstück als Prefab zu erstellen und diese dann durch den Spieler dynamisch platzieren zu lassen. Noch ne Frage: Was hast du gegen einzelne Segmente? Solange das nicht über 1000 (oder weit mehr, je nachdem) sind, ist das perfomancemäßig kein Problem.
  10. 2D Character Design / Animation

    Für 2D Art kenne ich 2 Wege (gibt bestimmt noch mehr): -> Du hast Talent/Interesse/Zeit etc. an dem Erstellen von 2D-Art (z.B. von allen Sachen im Game Development macht dir das am meisten Spass). Dann könntest du versuchen dich darauf spezialisieren, mit vllt klassischen Zeichenkursen, später Grafiktablett anschaffen, jeden Tag zeichnen üben (kennst ja die 10000 Stunden oder^^) usw. (GILT NUR FÜR VEKTORGRAFIK, kein PIXELART o.Ä.) -> Wenn wie bei mir die Absicht dahinter steht, 2D Art die einigermaßen ok aussieht für Games zu erstellen, dann besorg dir Paint.NET, Inkscape, schau eine Woche Video-Tutorials (gibts überall mit Google/Youtube) und übe. Auch der Ansatz dauert so 2-3 Monate, wenn man immer mal wieder was macht, ist aber auch für Normalsterbliche gut durchführbar. Art in Inkscape bauen, wenn nötig in Paint.NET nachbearbeiten und z.B. Körperteile einzeln nach Unity importieren (als Spritesheet, aber alle Teile einzeln, damit die sich unabhängig bewegen können). Dann entweder mit Mecanim (Schon so super, wieder Übung / Tutorials) oder einem kleinen Tool aus dem AssetStore (z.B. Puppet2D, wirklich günstig/super, ich verwende das), die Animationen erstellen. Ich würde dir immer VektorArt empfehlen, wenn du nicht zu Typ1 gehörst, weil für jede Animation 6-30 Frames manuell zu zeichnen wirklich sehr aufwendig ist.
  11. InGame Strassen oder Mauern bauen.

    Aus meinen eigenen (leidvollen) Erfahrungen einige Hinweise: -> Das ist aufwendig. Sehr aufwendig. Besonders wenn der Spielder das Ingame machen kann. -> Schritte : 1. Mausweg nach dem Drücken bis zum Loslassen aufzeichen. Das geht noch relativ einfach, z.B. mit einer Coroutine, die bei gedrückter Maustaste eine Liste von Vector3s / Tiles / was auch immer du benutzt aufzeichnet. 2. Die mathematische Vereinfachung dieses Pfads (kann man auch während des Erstellens machen), weil z.b. nur bestimmte Kurven erlaubt sind, bzw die Pfadveränderungen nicht zu abrupt ausfallen sollen. 3. Basierend auf diesem Pfad kannst du den Winkel zum nächsten Punkt des Pfades (die rotation) bestimmen. Abhängig von den Elementen, die du verwenden möchtest, kann dann hier das passende eingesetzt werden. Z.B.: Element 1 (Pfadpunkt 0 -> Pfadpunkt 1): Gerade Verbindung -> Gerades StraßenStück. Element 2 (Pfadpunkt 1 -> Pfadpunkt 2): Winkel von 45° (von Quarternion.identity aus), das vorherige Stück war gerade, also braucht man hier eine Kurve, die eine an ein gerades Stück anschließt und mit dem gewünschten Winkel endet.... Und so weiter. Ich hab mich im Zuge der prozeduralen Levelerstellung damit mal rumgeschlagen, wenn der Player das relativ frei selber machen kann, wirds wahrscheinlich noch komplizierter... Viel Glück!
  12. Überlappende Boxcollider

    Ich denke mal der Background Collider ist Trigger, wie das muss? Was du zum Debuggen auch gut machen kannst, ist alle GameObject in der Scene unter einen gemeinsamen Parent zu schieben (Root-Object) und dann im PlayMode Gizmos einzuschalten, dann solltest du alle Collider in der Scene sehen.
  13. Überlappende Boxcollider

    Aufbauend auf Saschas Kommentar könntest du mal versuchen entweder das Padding massiv zu erhöhen, oder den feurigen Freund auf Spielergröße zu verkleinern, bzw. auch mal kleiner zu Test. Und das Navmesh Tutorial hat sich auch für mich gelohnt, ich bin im Moment mit Simply Astar 2D Mode nicht so zufrieden, selber programmieren mach auch keinen Spass mehr (rekursive Funktionen kotzen mich an ) also vielleicht kauf ich das mal später.
  14. Überlappende Boxcollider

    Moin ich hab deine PN bekommen. Deaktivier als nächstes mal bitte den Collider auf dem Gegner, und wenn dies nicht möglich ist mach den mal ganz klein, schauen wir mal was passiert. Problem hier, ich kann die Schritte nicht so gut nachvollziehen, da ich das Tool nicht habe, müssen wir jetzt ein bisschen im Nebel stochern EDIT: Wenn du NavMesh2D von PigeonCoop hast: - Mach mal das Navmesh nochmal neu, aktivier "Bake Grid" mit Vector2 (0.5, 0.5). - Ist der Setup am Anfang mit den Layers korrekt? Also getrennte Wall / Floor Layers und die Objekte auch richtig zugewiesen? - Kannst du ein Screenshot von deinem Navmesh nach dem Baken posten? - Hast du nach dem Baken mit dem Tester rumgespielt, um dein Navmesh zu testen?
  15. Überlappende Boxcollider

    Moin, da muss ich später noch genauer schauen, bzw heute nachmittag, aber eine Sache könntest du noch versuchen: Gute Idee, immer wenn man mit Pathfinding/AI zu tun hat: Debug Lines. Anfangen kannst du mit if (path[0] != null) { Debug.DrawLine(transform.position, path[0], Color.Red,0.1f) } Pack das mal in die Update Funktion vom Gegner. Dann kannst du schon mal sehen wo der eigentlich hinwill. Wenn da alles stimmt, müssen wir weiterschauen. Eine Frage noch: Warum wird der aktuelle Path gelöscht, wenn der Feind weiter als 8 Units vom Spieler entfernt ist? Ist das deine Aggrorange? Edit: Im Playmode nicht vergessen "Gizmos" zu aktivieren, damit du die Debug Line sehen kannst!
×