Jump to content
Unity Insider Forum

Leaderboard

Popular Content

Showing content with the highest reputation since 10/26/2022 in all areas

  1. Was ich ja sogesehen damit getan habe... Die Liste könnte bis ins unendliche gehen. Deswegen weiß ich nicht ob das so sauber ist. malzbie meinte damit die tatsächlichen Layer. Wenn du die sortingOrder-Eigenschaft genommen hast, ist das schon völlig in Ordnung so. In dem Moment, wo du mit einem Laufindex auf deine Liste zugreifst, solltest du keine LinkedList mehr nehmen. Kann gut sein, dass einige LinkedList-Implementationen deshalb gar keinen Index-Zugriff erlauben. Nimm einfach ne normale Liste. Wenn du nicht zehntausende Elemente hast, bringt dir ne LinkedList keinen Performance-Vorteil. Ich nenne die inzwischen "MonoBehaviour-Events", und ich glaube das machen viele so. Mach selber nen Raycast (oder vermutlich eher Physics2D.OverlapPointNonAlloc) und filtere dir dann das Objekt mit der höchsten sortingOrder raus.
    1 point
  2. Also ich sehe da 2 Wege. Eintweder du gehst davon aus, dass alle Objekte zu Beginn in der obersten Ebene sind, oder sie sind zu Beginn in der untersten Ebene. Es ist ja eine Frage der Verortung. Also wie und wo können Sprites übereinander liegen. Geht es da nur um eine Art Inventory, dann ist es ja leicht zu wissen, welche Sprites an welcher Position liegen. Und wenn sie dann gestackt würden, dann müsste(n) das(die) Sprite(s) im Layer jeweils eins nach unten. Immer nur das Sprite im obersten Layer kann angeklickt werden. Das wäre einfach für den Test und ginge ohne Liste. Wird das oberste Sprite aufgehoben, dann müssten alle da drunterliegenden eine Ebene höher im Layer. Das wäre ein kleiner Befehl (event) für alle Sprites im entsprechenden Fach. Ist es aber irgendwie in einer Spielewelt, wo zufälligerwiese Sprites voreinander liegen würden, dann wird das schon schwieriger, denn jetzt musst du es irgenwie schaffen, diesen Haufen zu gruppieren. Da sehe ich klare Vorteile bei einer oder mehreren Listen, die immer dann da sind, wenn es zu Anhäufungen von Sprites kommt. Was ich aber noch wichtig fände, ist die Tatsache, dass man nicht unendlich viele SortingLayer anlegen muss. Man braucht vielleicht 3 für das Stacken. Das oberste Sprite soll natürlich immer oben gezeichnet sein. Das da drunter dann auch so, dass es optisch direkt unter dem Obersten liegt. Aber alle weiteren Sprites des Stacks können gemeinsam im untersten Layer liege. Ist vollkommen egal, wann welches gezeichnet wird. Nur musst du dann intern wieder eine Liste haben, die die richtige Reihenfolge für alle Sprites darstellt. Und dann ist es wirklich gut, wenn in der Liste das Oberste gelöscht würde und alle anderen nachrutschen. Die jetzt obersten 2 Sprites verschieben sich um einen Layer, fürs optische, und alle weiteren bleiben im untersten Layer. Der Test, welches Sprite denn anklickbar ist, ist ja ganz einfach über die Liste zu ermitteln.
    1 point
  3. Da bieten sich die Trigger an. Du brauchst also einen oder mehrere Collider, die über der Wiese liegen. Denen gibst du einen Tag, z.B. Grass und stellst den/die Collider auf Trigger. Wenn dein Player da rein läuft, werden Triggerevents gestartet. Die kannst du im Code nutzen. Das OnTgriggerEnter() Event wäre dann dafür da, zu sagen, dass du ab jetzt auf dem Grass bist. Beim verlassen des Triggers, würde OnTriggerExit() aufgerufen werden, was dir sagt, dass du das Gras wieder verlassen hast. https://docs.unity3d.com/ScriptReference/Collider.html Schau beim Link und scroll runter zu den Messages. Da findest du alles Nötige.
    1 point
  4. Also: Ich würde dir empfehlen, nicht die Kapseln direkt zu animieren, sondern sie jeweils in ein Empty-Object rein zu tun. Dieses Empty animierst du dann für die Bewegungen! Jede Empty, also jede Kapsel bekommt einen eigenen Animator mit allen Animationen da drin verpasst. Nicht eine Animationsspur fürs steuern zweier unabhängige Objekte nutzen. Ds bedeutet aber nicht, dass du nicht auch Animationen für mehrere Objekte nutzen kannst. Du kannst schon Animationen erstellen, die in allen Animatoren genutzt werden können. Wie z.B. der Einflug der linken und rechten Kapsel. Die beginnt ja irgenwo unten und geht bis zu einer gewissen Höhe im Screen. In der Animation animierst du dann also nur die Y Achse. Wenn jetzt also das Einflugevent in beiden Animatoren gestartet wird, z.B. per Trigger, dann fliegen beide Kapseln in den Screen hinein. Egal wo sie sich auf der X Achse befinden, du animierst ja nur Y. Da du indeinem Fall aber auch irgendwann die andere Achse animieren willst, würde ich das dann doch nicht so machen, sondern wirklich separate Animationen erstellen und auch keys für alle Achsen erstellen.. Wie dem Auch sei. Das Empty wird animiert, die Kapsel selber wird nur mitgenommen. Sollte jetzt eine der Kapseln zerstört werden, dekativierst du einfach die Kapsel und schon ist sie nicht mehr sichtbar und treffbar. Wärend des Deaktivierens, blendest du an selber Stelle ne schöne Explosion ein. Das EmptyObject ist noch da, und kann machen was es will, man sieht es eh nicht.
    1 point
  5. Hallo, meine Überarbeitungen jetzt nochmal in einem kleinen Video beschrieben.
    1 point
  6. Jaaa, gib her, da kann man ja nicht nein sagen
    1 point
  7. Bei 3D Objekten, die in einem 3D Programm, wie z.B. Blender erstellt wurden, kommt die Position des Achsennullpunktes von dem Ersteller selbst. Den kann man in Blender usw. hinschieben wo man will und man kann ihn natürlich auch drehen und somit bestimmen was oben und was vorne ist. Bei den Grundobjekten von Unity ist das nicht so, da ist das Dingen wo es ist. Was du aber machen kannst: Erzeuge ein EmptyObject und ordne den Grundkörper diesem Empty unter. Die Transformwerte, die du jetzt bei dem Grundkörper siehst, sind Werte im Bezug auf den Vater. Schreibst du bei der Position 0,0,0, dann ist das Grundobjekt genau am Punkt des Empty. Du kannst jetzt also das Grundobjekt, also das Kind des Empty so verschieben, dass der Nullpunkt des Empty z.B. am unteren Rand des Kindes ist. Gibts du jetzt nicht dem Grundobjekt einen Collider und Rigidbody, sondern dem Vater, also dem Empty, dann ist der Vater das entscheidende, wenn es um Kollisionen und Kräfte geht. Das KindObjekt ist nur fürs aussehen da. Übrigens, du kannst im Szeneview oben in der Leiste einstellen, welchen Nullpunkt du sehen willst. Entweder den Zentrierten, oder den Wirklichen. (Global oder Local). Um den echten Nullpunkt zu sehen (Bei importierten Objekten, wie oben beschrieben) musst du auf Local gehen. Bei den Grundkörpern und einem EmptyObject ist sind beide Punkte natürlich identisch.
    1 point
  8. Hallo Schau dir mal das hier an: https://assetstore.unity.com/?q=localization&orderBy=1 Das sind auch kostenlose assets dabei und wenn du es selber schreiben willst, kannst du die Begriffe dort für google verwenden. Ich hatte mir selber was geschrieben und vorher 12Localization genutzt (und war damit eigentlich glücklich) Christoph
    1 point

Announcements

Hy, wir programmieren für dich Apps(Android & iOS):

Weiterleitung zum Entwickler "daubit"



×
×
  • Create New...