J'ai du mal à comprendre les bases du pixel art dans Unity.
Je comprends ce qu'est une unité et que si je dessine mon sprite avec 16x16 pixels, je dois définir PPU sur 16.
Prenez stardew valley par exemple, dans l'image ci-dessous, vous pouvez clairement voir que le joueur n'est pas carré. Le créateur du jeu a dit qu'il avait tout fait en 16x16, mais comment y a-t-il autant de détails dans les personnages? Vous ne corrigez sûrement pas plusieurs carrés 16x16 ensemble pour créer un personnage (comme vous le feriez avec un tilemap)?
Quelle est la façon «courante» de traiter des choses qui ne sont pas carrées, comme les personnages de l'image. Faites-vous simplement un sprite 16x32 et définissez PPU sur 16? Cela ne donnera-t-il pas un aspect un peu bizarre à côté des sprites 16x16? Choisissez-vous généralement une taille (c.-à-d. 16, 32, 64), puis respectez-vous cela pour tout dans le jeu?
Le problème visuel que j'ai vu est celui-ci, où un sprite 32x32 semble très déplacé (trop net) à côté d'un sprite 16x16.
Je me demande donc comment mélanger les tailles sans obtenir cet effet où une image semble beaucoup plus nette que l'autre. Si, par exemple, je voulais qu'un caractère soit 16x32, ou n'importe quelle valeur non carrée, quand mes tuiles sont 16x16
la source
Réponses:
Pour résumer les points ci-dessus, ce qui importe pour que deux éléments de pixel art correspondent, c'est que leur densité de pixels (texels par zone d'écran / unité mondiale) soit la même.
En utilisant certains sprites de Stardew Valley comme exemple, nous pouvons voir que même si les sprites ont des dimensions de texture différentes, ils correspondent sur une grille cohérente car chaque pixel est dessiné de la même taille.
Si nous considérons la taille de la plante comme une tuile / une unité d'espace mondial, nous pouvons voir que cette unité s'étend sur 16 pixels horizontalement et verticalement. Le personnage, ayant deux fois la hauteur de la plante, couvre également deux fois le nombre de tuiles / unités mondiales, de sorte que la densité de pixels reste la même à 16 pixels par unité mondiale.
Pour Unity en particulier, il l'expose pour vous en tant que paramètre Pixels par unité dans l'inspecteur des paramètres d'importation de Sprite . Tant que vous utilisez un nombre cohérent ici pour tous vos sprites, Unity se chargera automatiquement de les dessiner à la bonne taille dans votre monde pour conserver cette densité de pixels - même si ce sont des tailles impaires et non pas deux ou exactes. multiples de la taille de votre carreau. Donc, dans cet exemple, à la fois l'arbuste et le personnage, et tout le reste dans le jeu utiliserait un PPU OF 16.
Le nombre exact que vous choisissez n'est pas un problème, c'est la cohérence qui compte le plus. Si nous voulions que chaque tuile s'étende sur 2 unités mondiales, afin que lors de l'édition de niveau, nous puissions facilement nous aligner sur les coins de tuiles (nombres impairs) et les centres de tuiles (nombres pairs), alors nous utiliserions un PPU de 8 à la place pour tous nos sprites.
Ne le baissez pas trop bas. Vous verrez des articles recommandant un paramètre PPU de 1, ce qui signifie qu'un sprite de 256 pixels s'étendra sur 256 unités mondiales. Bien que cela puisse ne pas sembler alarmant, des systèmes comme la physique sont réglés en supposant que la plupart de votre gameplay se déroulera sur des échelles de dixièmes à des dizaines d'unités, et rendre votre échelle trop grande peut entraîner un mauvais comportement. Essayez de choisir un certain nombre de pixels significatifs dans votre gameplay, comme la largeur de votre personnage ou votre tuile. Cela facilitera également vos calculs pour la programmation et la conception de niveaux (par exemple, "Je veux que ce personnage lance 3 tuiles correctement, donc c'est
x + 3.0f
")Notez que la mise à l'échelle d'une image-objet, d'une image d'interface utilisateur ou de ses parents à l'aide des propriétés de transformation les distordra de cette densité de pixels cohérente, alors soyez très prudent avec les propriétés d'échelle et conservez la plupart ou la totalité de votre scène à une échelle de 1,0 pour plus de simplicité.
Une dernière mise en garde est que rien de tout cela ne détermine la taille réelle de vos sprites sur votre écran - cela est déterminé par la taille de votre fenêtre / écran de jeu, et la taille / FoV / angle de votre caméra. Pour des pixels parfaits en 2D, vous devrez également vous assurer que la hauteur de votre fenêtre est un multiple entier du nombre de pixels d'image-objet que votre caméra voit (hauteur orthographique de la caméra x 2 x PPU)
la source