Je cherche à prototyper un jeu dans Unity qui consistera en sprites / tuiles carrés solides. Je suppose que je peux représenter différents types d'objets avec des couleurs différentes pour chacune des tuiles du jeu.
Je pense que je peux importer un sprite carré unique et le nuancer de manière appropriée dans Unity, par opposition aux carrés importés de nombreuses couleurs différentes.
Mon expérience de l'ajustement de la teinte et de la saturation dans Photoshop montre que le blanc n'est pas une couleur facile à changer car les choses blanches restent souvent blanches. Mes tests dans Unity montrent que je peux changer la "couleur" d'un sprite en autre chose que du blanc et le sprite est apparemment ombré de manière appropriée, malgré ce que j'aurais pensé étant donné mon expérience Photoshop.
Étant donné que les objets blancs semblent prendre la nuance de couleur appropriée lorsqu'ils sont modifiés dans Unity, mon instinct me dit que c'est la meilleure couleur de base pour commencer, ce qui signifie que je peux importer un seul sprite carré blanc et simplement ajuster la couleur pour représenter différents objets et les états d'objet.
Un sprite blanc est-il en fait le meilleur sprite de couleur pour commencer et pourquoi quelque chose comme cela fonctionne-t-il dans Unity plutôt que d'ajuster la teinte et la saturation dans Photoshop?
Réponses:
Le blanc est la meilleure couleur de base pour une représentation fidèle. Garder également votre échelle de gris de sprite peut faciliter les ajustements de couleur pour les équipes, etc.
Unity applique un
Multiply
mode de fusion à la texture et à la couleur de l'image-objet.Le type de couleur d'Unity est compris entre 0 et 1 inclus.
Couleur.Blanc est égal à
(1, 1, 1, 1)
.Sachant que
1
quelque chose est en soi.Si l'échelle de gris
texture
est mélangée avec leColor
champ Sprite Renderer , chaque pixel est lui-même. La modification de ce champ multipliera simplement chaque valeur de gris uniforme par chaque composant de la couleur.Vous pouvez jouer avec le mode de fusion Multiplier dans votre éditeur d'images préféré comme Photoshop ou GIMP.
la source
Sprites-Additive.shader - GitHub Gist
Les couleurs Unity ont 4 valeurs flottantes typiques de nombreux formats de couleurs RGBA, correspondant aux valeurs de pourcentage de couleur individuelles Rouge, Vert, Bleu et le canal de transparence Alpha.
De plus, comme mentionné ci-dessus, la "teinte" par défaut appliquée par Unity est un shader multiplicatif appelé cet effet "Multiplier" et le processus multiplie littéralement les valeurs de couleur dans les pixels de votre image-objet avec la valeur de couleur sélectionnée.
Le problème avec ceci est qu'un shader mathématique multiplicatif produira TOUJOURS la même teinte (si vous "multipliez" par du blanc) ou une couleur plus foncée si vous multipliez par autre chose. Je suis tombé sur la situation où je voulais exactement l'effet inverse dans une situation de type forgeron. Le métal chauffé ne doit pas être multiplié par le jaune pour produire une teinte plus foncée:
Au lieu de cela, j'ai réécrit le shader multiplicatif par défaut d'Unity pour qu'il soit additif. Les résultats correspondaient davantage à ce que je recherchais:
Je fournirai un résumé au Sprites-Additive.shader réécrit si quelqu'un est intéressé.
Voici une bonne référence sur la terminologie et les modes de couleur: http://www.northlite.net/ps/blend.htm
la source