Grundlegendes zur Pixelkunst in Unity 2d

9

Ich habe Probleme, die Grundlagen der Pixelkunst in Unity zu verstehen.

Ich verstehe, was eine Einheit ist, und wenn ich mein Sprite mit 16 x 16 Pixel zeichne, sollte ich die PPU auf 16 setzen.

Nehmen wir zum Beispiel das Stardew Valley. Im Bild unten sehen Sie deutlich, dass der Spieler nicht quadratisch ist. Der Schöpfer des Spiels sagte, er habe alles in 16x16 gemacht, aber wie sind dann so viele Details in den Charakteren? Sicherlich patchen Sie nicht mehrere 16x16-Quadrate zusammen, um einen Charakter zu erstellen (wie bei einer Tilemap)?

Geben Sie hier die Bildbeschreibung ein

Was ist die "übliche" Art, mit Dingen umzugehen, die nicht quadratisch sind, wie die Zeichen im Bild. Erstellen Sie einfach ein 16x32-Sprite und setzen Sie die PPU auf 16? Wird es nicht neben 16x16 Sprites ein bisschen komisch aussehen? Wählen Sie im Allgemeinen eine Größe (dh 16, 32, 64) und halten Sie sich dann für alles im Spiel daran?

Das visuelle Problem, das ich gesehen habe, ist das, bei dem ein 32x32-Sprite neben einem 16x16-Sprite sehr fehl am Platz (zu scharf) aussieht.

Geben Sie hier die Bildbeschreibung ein

Ich frage mich also, wie Sie Größen mischen können, ohne diesen Effekt zu erzielen, bei dem ein Bild viel schärfer als das andere aussieht. Wenn ich zum Beispiel wollte, dass ein Zeichen 16x32 oder ein nicht quadratischer Wert ist, wenn meine Kacheln 16x16 sind

Green_qaue
quelle
2
Die PPU hat nichts mit den Texturabmessungen Ihrer Sprites zu tun. Sie entscheidet lediglich über den Maßstab, in dem sie relativ zu Ihrem Weltkoordinatensystem angezeigt werden. Zwei Sprites mit derselben PPU zeigen dieselbe Pixeldichte (dh die angezeigte Größe jedes Pixelblocks ist bei direkter Betrachtung von einem Sprite zum anderen gleich), selbst wenn die Bilder völlig unterschiedliche Größen haben. Ich bin mir also nicht sicher, was Sie unter "Wird das nicht ein bisschen komisch aussehen" verstehen. Können Sie genau erläutern, welches visuelle Problem Sie beobachtet haben?
DMGregory
@ DMGregory Klar, lass mich ein Bild hochladen
Green_qaue
1
Der in Ihrem Beispiel-Screenshot gezeigte Effekt tritt auf, wenn Sie zwei Bilder mit unterschiedlichen PPU-Werten zusammenfügen (oder wenn die Pixel eines Bildes in der Textur selbst verdoppelt / verdreifacht werden oder Sie eine Skalierung auf ein Bild angewendet haben, das andere jedoch nicht). . Wenn Sie sich an einen konsistenten PPU-Wert halten und Ihre Sprites nicht skalieren, behalten Sie eine konsistente Pixeldichte bei
DMGregory
@DMGregory Wenn meine Kacheln also 16 x 16 sind und ich ein Zeichen mit mehr Details möchte (wie Sie sehen können, dass das 16 x 16-Zeichen oben nur sehr wenige Details enthält), z. B. 32 x 16, sollte ich ein 32 x 16-Sprite erstellen und die PPU auf 16 (gleich) halten als Fliesen)?. Oder wenn ich zum Beispiel einen Elefanten wollte, dann müsste das vielleicht 64x128 sein, würde ich das dann auch auf 16 PPU setzen?
Green_qaue
1
PPU gibt an, wie viele Pixel in eine Welteinheit passen. Wenn Sie immer möchten, dass Ihre Pixel dieselbe Größe haben, sollten Sie immer einen konsistenten PPU-Wert verwenden. (Das bedeutet, dass ein 16x16-Strauch und ein 64x128-Elefant mit jeweils 16 PPU die gleiche Pixeldichte aufweisen und der Elefant 32-mal mehr Bildschirmfläche bedeckt als der Strauch). Ist das alles, worüber Sie sich gewundert haben?
DMGregory

Antworten:

15

Zusammenfassend ist es wichtig, dass zwei Pixelbilder übereinstimmen, dass ihre Pixeldichte (Texel pro Bildschirmfläche / Welteinheit) gleich ist.

Anhand einiger Sprites aus Stardew Valley können wir sehen, dass die Sprites zwar unterschiedliche Texturabmessungen haben, jedoch in einem konsistenten Raster übereinstimmen, da jedes Pixel dieselbe Größe hat.

Beispiel für zwei Sprites unterschiedlicher Größe bei gleicher Pixeldichte.

Wenn wir uns die Größe der Pflanze als eine Kachel / eine Einheit des Weltraums vorstellen, können wir sehen, dass diese Einheit horizontal und vertikal 16 Pixel umfasst. Das Zeichen, das die doppelte Höhe der Pflanze hat, deckt auch die doppelte Anzahl von Kacheln / Welteinheiten ab, sodass die Pixeldichte bei 16 Pixeln pro Welteinheit gleich bleibt.

Speziell für Unity wird dies für Sie als Pixel pro Einheit angezeigt Einstellung im Inspektor für Sprite-Importeinstellungen angezeigt . Solange Sie hier eine konsistente Zahl für alle Ihre Sprites verwenden, wird Unity diese automatisch in der richtigen Größe in Ihrer Welt zeichnen, um diese Pixeldichte beizubehalten - auch wenn es sich um ungerade Größen handelt und nicht um eine Zweierpotenz oder eine exakte Vielfache Ihrer Fliesengröße. In diesem Beispiel würden sowohl der Strauch als auch der Charakter und alles andere im Spiel eine PPU von 16 verwenden.

Die genaue Anzahl, die Sie wählen, ist keine große Sache, sondern die Konsistenz, die am wichtigsten ist. Wenn wir wollten, dass jede Kachel 2 Welteinheiten umfasst, damit wir bei der Ebenenbearbeitung leicht an Kachelecken (ungerade Zahlen) und Kachelmitten (gerade Zahlen) fangen können, würden wir stattdessen für alle unsere Sprites eine PPU von 8 verwenden.

Drehen Sie es einfach nicht zu niedrig. In einigen Artikeln wird eine PPU-Einstellung von 1 empfohlen, was bedeutet, dass ein 256-Pixel-Sprite 256 Welteinheiten umfasst. Obwohl dies möglicherweise nicht alarmierend klingt, werden Systeme wie die Physik so eingestellt, dass der größte Teil Ihres Spiels auf Skalen von Zehntel bis Zehn von Einheiten stattfindet. Wenn Sie Ihre Skala zu groß machen, können sie sich schlecht verhalten. Versuchen Sie, eine Anzahl von Pixeln auszuwählen, die für Ihr Gameplay von Bedeutung sind, z. B. die Breite Ihres Charakters oder Ihrer Kachel. Dies erleichtert auch Ihre Mathematik für die Programmierung und das Level-Design (z. B. "Ich möchte, dass dieser Charakter 3 Kacheln richtig streicht, das ist es also."x + 3.0f ").

Beachten Sie, dass das Skalieren eines Sprites, eines UI-Bilds oder seiner übergeordneten Elemente mithilfe von Transformationseigenschaften diese von dieser konsistenten Pixeldichte ablenkt. Gehen Sie daher bei den Skalierungseigenschaften sehr vorsichtig vor und halten Sie den größten Teil oder die gesamte Szene der Einfachheit halber auf einer Skala von 1,0.

Eine letzte Warnung ist, dass nichts davon bestimmt, wie groß Ihre Sprites tatsächlich auf Ihrem Bildschirm landen - dies wird durch die Größe Ihres Spielfensters / Bildschirms und die Größe / FoV / Winkel Ihrer Kamera bestimmt. Für pixelgenaues 2D müssen Sie außerdem sicherstellen, dass die Höhe Ihres Fensters ein ganzzahliges Vielfaches der Anzahl der Sprite-Pixel ist, die Ihre Kamera sieht (orthografische Höhe der Kamera x 2 x PPU).

DMGregory
quelle