Jump to content
Unity Insider Forum

malzbie

Moderators
  • Posts

    5,326
  • Joined

  • Last visited

  • Days Won

    387

Everything posted by malzbie

  1. Ja muss ja nicht das Universal sein, kann ja auch das High Definition sein. Was hast du denn eingestellt als du dein Projekt begonnen hast. Bist du auf Universal ( sparsam und gut), HighDefinition (gib alles was du hast) oder der alten RenderPipeline (wie eh und jeh) unterwegs?
  2. Ne, also da können wir dir hier nicht helfen. Da musst du schon mal zum Spielersteller kontakt aufnehmen. Klar, irgendwas passt der Engine nicht, aber was das sein könnte können wir nicht sagen.
  3. Du nutzt ja sicherlich einer der Rederpipelines. Du musst im Renderpipeline Asset ( liegt bei dir wahrscheinlich direkt im Asset Ordner) einfach die Schattenweite anpassen.
  4. Was hast du befürchtet? Was hast du denn in deine Sektoren rein gebaut, dass es in deinen Augen problematisch sein könnte? Übrigens hat sich @Sascha mit der Awake etwas falsch ausgedrückt. Wenn ein GO in einer Szene erwacht, egal ob es von Beginn an aktiv da war oder erst später aktiviert wird, wird die Awake Funktion des/der Scriptkomponent(n) ausgeführt. Auch wenn diese Komponente(n) nicht enabled ist/sind ! Genauso werden auch OnCollision oder OnTrigger Events ausgeführt, egal ob das Script aktiv ist oder nicht. Ich habe vor Jahren mal eine Grundlagen-Reihe auf YT erstellt, wo genau dieses Awakeverhalten gezeigt wird. Hier kannst du ja mal rein gucken. (Es ist schon zur richtigen Position vorgespult.)
  5. Das kannst du ja leicht ausprobieren, wenn du in die Start und Awake ein Debug.Log rein tust. Aber ich kann es dir auch so sagen. Wenn ein Objekt in der Szene erscheint, wird die Awake ausgeführt, auch wenn das Script selber eigentlich nicht enabled ist. Sobald das Script enabled wird, wird auch die Start ausgeführt. Das macht er aber insgesamt nur einmal. Awake und Start werden nicht nocheinmal ausgeführt. Bei OnEnable und OnDisable würde jedes mal beim Aktivieren/Enablen etwas ausgeführt werden, falls du das nutzt.
  6. Ja, so richtig viel kann man da mit den Farben nicht machen. Aber(!) : Du schreibst ja, dass du ein leeres Objekt in einen Canvas eingefügt hast. Ein leeres Objekt hat natürlich nichts drin und ist erst einmal nur ein Punkt im Raum. Der Bezugsrahmen ist also eigentlich nur so ein Fake. Sobald du da ein Objekt drin hast, z.B. ein Image, siehts du einen kräftigeren Rahmen, selbst dann wenn das Image transparent ist. Dann gibt es ein paar Helferleins, die dir das Ganze etwas leichter machen. Alles im Canvas ist ja in der Regel 2D. Deswegen macht es Sinn, dass 2D Werkzeug zu nutzen ( das Quadrat mit den 4 dicken Echpunkten oben neben dem Skalierwerkzeug). Das Dingen ist gut zu sehen und hilft super beim Ausrichten. Als weiteres Helferlein kannst du im Inspector für jedes GameObject eine eigenes Icon wählen, Ich habe in dem Bild dieses ovale Label gewählt, was dir auch den Namen des Objektes anzeigt. Dafür müssen natürlich die Gzmos auch angezeigt werden. Damit das Label-Icon auch immer groß zu sehen ist, solltest du unter Gizmos die 3D Icons ausschalten, so wie ich es markiert habe. Ist der Haken drin, siehts du die Gizmos erst wenn du nah am Objekt bist. Dieses Icon hilft dir übrigens auch beim Selektieren mit der Maus, wenn z.B. mehrere Objekte sich überschneiden sollten. Ja und dann hilft natürlich die Hintergrundfarbe. Der Rahmen ist immer nur etwas heller als der Hintergrund. Er nimmt eine hellere Farbe des Hintergrundes an. Wenn du also die Möglichkeit hast, wärend der Bauphasse einen roten, grünen oder graue Hintergrung mit 50% Intensität anzulegen, dann solltest du den Rahmen kräftiger sehen können. Je nachdem, welche Sehschwäche du hast.
  7. Ne, dumm ist die Frage nicht. Wenn du bei einem 2D Spiel irgendwie die Perspektive mit rein bringen willst, kannst du keine Boden-collider mehr nutzen, denn du musst deinen Charakter je nach Position im Raum anheben oder absenken. Weiter hinten ist weiter oben, weiter vorne ist weiter unten. Soll der Charakter sich hinter Möbeln bewegen, dann muss das Sprite in Z Richtung der Renderreihenfolge nach hinten geschoben werden. So als hättest du mehrere Folien übereinander gelegt. Die vorderste Folie ist ganz nah an der Kamera, und die hinterste Folie ist am weitesten weg. Jetzt hat aber eine Folie sogut wie keine Tiefe. Ein Möbelstück aber schon. Wenn es so gemalt wäre, als würde die Tiefe 3 Pixel sein, musst du es irgendwie bewerkstelligen, dass der Charakter erst dann an dem Möbelstück vorbei kommt, wenn es entweder eine Ebene vor dem Möbelstück ist oder aber 3 Ebenen dahinter. Ein Collider am Möbelstück bringt jetzt also auch nicht mehr viel, denn ein 2D Collider geht endlos in die Tiefe. Du kannst aber mit Triggern arbeiten und beim Trigger einen Tiefenwert, der in einem Script als public Variable abgelegt ist, und den Layer abfragen, auf dem das Objekt liegt. Ist dein Layer der gleiche wie das Möbelstück oder weniger weit hinten, als der Tiefenwert sagt, dann kannst du nicht vorbei. https://docs.unity3d.com/ScriptReference/SpriteRenderer.html Im Link siehst du alle Dinge, die du per Script beim Sprite Renderer abfragen kannst. Darunter auch die Sorting Layer ID. Die Bewegung in der Tiefe in einem 2D Game ist also etwas tricky. Solltest du dich jetzt nicht in der Tife bewegen können sondern willst nur einige Objekte vor dem Charakter haben und andere dahinter, dann musst du ihnen nur die Werte im Layer anpassen. Der Rest geht automatisch.
  8. Hast du denn in den Buildeinstellungen auch schon mal auf Mac oder IOS umgestellt? Unity macht dann im Hintergrund einiges mit allen möglichen Daten. Vielleicht ist dann wieder alles ok.
  9. Da gibt es etwas Feines in der Dokumentation: https://docs.unity3d.com/ScriptReference/RaycastHit-normal.html
  10. Fein. Das werde ich demnächst mal testen.
  11. Gestatten: Der Bomber! Nun gehts aber ab! Der Bomber wirft 2 Bomben gleichzeitig, ist aber recht behäbig beim Fliegen. Na ja, er soll ja auch nur Bomben abwerfen und keine Kunststücke machen.
  12. Tja. Ich muss mich wohl mal mit UMA befassen. Da weiß ich fast gar nix drüber. Aber ich habe keine Zeit!!! Hmmm. Na ja, wenigstens geht's bei dir.
  13. Keine Ahnung. Aber möglicherweise musst du die Animationen nicht ändern, da die Katze ja nur in der Höhe gestaucht ist, nicht in der Länge oder Breite. (so scheint es jedenfalls) Also schau dir an was die 2 neuen Bones für Eigenschaften haben. Vielleicht ist da etwas skaliert und kann verändert werden.
  14. Naja, das ist jetzt nun mal der Typ der Komponente, der angezeigt wird. Man kann innerhalb eines Scripts einige Dinge machen, wie z.B. einen Header setzen oder Tooltips hizufügen. Beispiel: https://docs.unity3d.com/ScriptReference/HeaderAttribute.html Das was du aber willst würde "möglicherweise" mit einem Custom Editor gehen. Aber da bin ich nicht im Thema. Mach es doch anders. Erzeuge 2 Empty-Childs und bennen sie. Lege da jeweils einen der GameEventListener rein. Und schon kannst du sie über die Namen der Emptys unterscheiden.
  15. Mit Wichtung meine ich den Wert, der dem Mesh sagt wie stark ein jeweiliger Bone auf einen Punkt vom Mesh wirkt. In vielen 3D Proigrammen kann eine Wichtung von über 100% eingestellt sein, ohne dass sie sich im 3D Programm negativ auswirkt. Wenn jetzt ein Punkt von irgendeinem Bein z.B. 75% Wichtung vom Oberschenkel bekommt und 25% vom Unterschenkel, dann hat er 100% Wichtung. Der Oberschenkel wirkt aber viel Stärker auf den Punkt wie der Unterschenkel. Soweit klar. Kommt jetzt ein neuer Bone ins Spiel und dieser Bone wichtet automatisch alle Punkte im Mesh mit (weil's die Software so macht), dann könnte dieser Punkt von eben jetzt zusätzlich eine Wichtung vom neuen Bone bekommen. Nehmen wir mal an es wären 50%. Dann hätte er also 150% Wichtung. Wenn der Neue Bone bewegt wird, oder die anderen Bones sich vom neuen Bone entfernen, dann wird das Mesh verzerrt, denn der Neue wirkt ja auch auf die Punkte im Mesch und versucht sie bei sich zu halten. Ein anderes Problem kann auch vorkommen, wenn du die Hierachie im Rig änderst, denn jeder Bone hat ja eine Grundausrichtung wenn du ihn mit dem Mesh verbindest, also wichtest. War jetzt der Unterschenkel ein Kind vom Oberschenkel, dann hatte er eine lokale Ausrichtung im Bezug auf den Oberschenkel. Dreht sich der Oberschenkel an seinem Joint (Gelenk), wird der Unterschenkel mit genommen. Dreht sich der Unterschenkel an seinem Joint dreht sich der Oberschenkel natürlich nicht, er ist ja der Vatter. Natürlich bewegen sich die die Punkte vom Mesh unterschiedlich im Bereich der Wichtung. Also am Knie. Sie würden da die z.B. die Haut spannen. ( Das sind die 75% zu 25% die die beiden Bones auf das Mesh ausüben). Würdest du jetzt den Unterschenkel zu einem Kind vom Arm machen und den Arm drehen, dann würde der Unterschenkel sich extrem vom Oberschenkel weg ziehen und das Mesh an dem Bereich dehnen, aber die geteilte Wichtung am Knie würde nicht so stark gedehnt werden, denn da wirkt der Oberschenkle mit drauf und versucht die betreffenden Punkte bei sich zu behalten. Fazit: Jeder Bone kann mit jedem Punkt im Mesh verbunden sein und eine Wichtung ausüben. Egal ob es sinnvoll ist, oder nicht. Im Umkehrschluss ist es auch möglich dass ein Punkt nicht zu 100% gewichetet ist. Er würde dann beim Bewegen der Bones nicht zu 100% mitgenommen werden. Soweit so gut. Du hast jetzt eine neue Hierachie gebaut und damit die Bezugswerte des Rigs verändert. Wenn die neuen Bones keine Wichtung des Meshes bekommen haben, dann wirkt wohl die Skalierung der neuen Bones auf die alten Bones. (So wie @Saschaschrieb.) Ja und das siehst du erst, sobald der erste Wert der Aniamtion eingelesen wurde, denn erst dann wird das Mesh verformt.
  16. Ich vermute, dass die neuen Bones auch eine Wichtung auf das Mesh bekommen haben, was aber nicht haben sollten. Das Bild sieht jedenfalls genauso aus.
  17. Willkommen und viel Spaß!
  18. Ich sehe in deinem Cutscene Video dass du eine NullReferenceException hast. Dir fehlt also irgend etwas, auf das irgendein Script zugreifen möchte. Immer (!) wenn du solche Meldungen bekommst, geht auch etwas schief. Im Editor läuft das Spiel zwar augenscheinlich weiter, aber es macht nicht mehr das, was es soll. Bereinige erst einmal den Fehler. Wenn dein Sichtbarkeitsproblem dann immer noch da ist, dann guck noch einmal unter den LeftHandIndex, ob die Laterne noch da ist und ob das Mesh überhaubt enabled ist. Vielleicht wird es ja über eine Animation oder einen Scriptbefehl disabled.
  19. Ich selber habe lange nichts mehr mit solchen Animationen gemacht, es sollte sich aber nicht so stark verändert haben. Darum könnte mein altes Tutorial noch recht gut funktionieren. Ich glaube im Video 2 ist das Richtige für dich drin.
  20. Für mich sieht es so aus, als würde der Player gleich zu Beginn an eine Position gesetzt, die genau im Collider des Bodens ist. Also irgendwo ( evtl. in der Start) setz du per tranform.position die Position des Kerlchens. Wenn soetwas gemacht wird, dann kann der Collider nicht mehr funktionieren, denn es wurde nicht von der Physik verursacht.
  21. Hi! Also ganz wichtig: Die Spielfigur und der Boden müssen Collider haben. Da du von einem 2D Spiel sprichst, müssen beide 2D Collider haben, die sind in der Tiefe unendlich lang. Zusätzlich muss mindestens eines der Objekte eine Rigidbody haben auch hier wieder der 2D Rigidbody. Normalerweise hat der Player den Rigidbody. Alle Collider und RB müssen 2D sein. Die normalen Collider und RBs arbeiten nicht mir den 2D Collidern und RBs zusammen. Solltest du einen Collider als Trigger geschaltet haben, dann kollidiert er auch nicht. Er nimmt dann nur das Berühren und Durchdringen anderer Collider wahr. Das kann man dann im Code gut verwenden, z.B. für Checkpoints. Also alle Collider und RB's müssen Collider2D und Rigidbody2D sein (nicht mit den 3D Collidern und RBs vermischen). Collider, die zum Trigger gemacht worden sind, sind kein Hindernis. Einen Rigidbody brauchst du auf jeden Fall, weil es sonst kein Abprallen gibt.
×
×
  • Create New...