5. Mai 2024

The story continues…

Diese Woche machte ich mich daran, weiter an meinem Charakter zu arbeiten. Da ich nicht wusste, wie man in Unity einen Softbody mit collision macht, habe ich als erstes Nachforschungen angestellt, was die beste Lösung sein könnte. Dabei kam ich auf folgende Möglichkeiten:

  • Rope bin Bones
  • Cloth
  • Hinges
  • Alles von Hand
  • Line-Renderer

Da ich den Charakter prozedural generieren wollte, kam ein Rig nicht in Frage. Cloth schloss ich aus ästhetischen und rechenleistungstechnischen Gründen ebenfalls auch. Deshalb blieben nur noch Hinges übrig, welche einen guten Mittelweg bieten. Ich informierte mich zuerst genau wie diese funktionieren und was man alles wie einstellen kann. So kamm ich am Ende des ersten Tages zu folgendem Ergebnis:

Da der Körper aber Solid und aus einem Block sein soll, habe ich mich als nächstes an das Generieren von Meshes in Unity herangewagt. Dies ist gar nicht so einfach wie es auf den ersten Blick erschein. Zuerst müssen alle Vertices am richtigen Ort generiert werden damit man diese Anschliessend zu triangles zusammenhängen kann. Danach mappte ich die einzelnen Vertex-Ringe an die Positionen der Körper-Collider-Objekte so, dass ein Einzelner zusammenhängender Wurm entstand.

So ganz zufrieden war ich aber mit dem Ergebnis noch nicht. Wenn sich der Wurm nämlich eng zusammenrollt, sieht das Mesh sehr eckig aus. Dies versuchte ich zu verbessern, indem ich die Anzahl Vertices verdoppelte und in die Lücken zwischen den einzelnen Gliedern ebenfalls Vertex-Ringe setzte. Doch einfach so dazwischen setzen ging nicht, denn so wäre der Körper immer noch eckig. So musste ich lernen, wie man selber ein Spline berechnet und generiert. Das Problem war, dass ich nur die Positionen der Gelenke hatte, man aber für die Berechnung einer Kurve 4 Punkte benötigt. So musste ich die anderen 2 von Hand generieren.

Debugging 101: Möglichst viele Linien in verschiedenen Farben zeichnen.

 

Skizzen sind immer gut!

Resultat nach 4 Tagen Arbeit:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert