Libgdx changer la couleur de la Texture lors de l'exécution
dans un jeu, avec Libgdx
j'ai un TextureAtlas
, dans lequel je stocke toutes les TextureRegion
s pour mon Animation
s de la Player
. Le Player
par défaut est d'un bleu T-Shirt (par exemple).
Maintenant, je voudrais être en mesure d'avoir plus d'une Player
, et tous les Player
devrait avoir un autre T-Shirt de couleur.
Donc, fondamentalement, je veux remplacer le bleu avec le rouge pour la deuxième Player
, avec du vert pour la 3ème Player
et ainsi de suite.
Je suis sûr que je peux le faire avec PixMap
, mais n'aurais-je pas alors lâche l'avantage de la TextureAtlas
?
Est-il une autre possibilité pour ce faire? Ou ai-je besoin d'avoir toutes les "couleurs" comme un TextureRegion
dans le TextureAtlas
?
Une autre petite question:
Avec Gimp (et peut-être quelques autres programmes), vous pouvez utiliser des index de couleur ".gif fichiers".
Cela réduit la taille de toutes vos Texture
s, par l'enregistrement d'un index pour chaque couleur dans le fichier puis de l'utilisation de cet indice pour décrire les pixels. Ainsi, pour chaque pixel rouge, vous auriez un "1" au lieu de "#FF0000" et quelque part dans le fichier que vous avez un "1=#FF0000".
Ensuite, si vous pack ".gif" fichiers avec l'index de couleur à l'intérieur d'un TextureAtlas
, est l'indice a ensuite perdu et il restaure la valeur par défaut des couleurs RVB ou fera que donner des problèmes?
Merci beaucoup!
J'ai toujours le faire avec certains
Sprite
et Sprite#setColor(Color tint)
🙂mais si je fais ça, tout le
TextureRegion
est affectée ou je me trompe? Il n'affectent que la partie blanche?ce sera le même que
spriteBatch.setColor(1, 0, 0, 1)
, mais seulement pour Sprites
, j'ai TextureRegion
s. Merci de toute façon (:OriginalL'auteur Springrbua | 2014-06-04
Vous devez vous connecter pour publier un commentaire.
J'ai fait face à la même Question pour la génération d'arme avec des couleurs aléatoires à l'aide de la même texture.
J'ai donc écrit ce.
Fondamentalement, je fais un pixmap de la texture que vous souhaitez modifier.
Puis vous répéter sur tous les pixels, lors de l'itération-je vérifier pour certaines couleurs qui sont une partie spécifique d'une partie de la texture. (Je suggère d'utiliser différentes nuances de gris depuis le RVB est le même)
Puis quand il est sur un pixel dont la couleur doit être changé, je prends une couleur pour ces groupes de pixels à l'aide d'un sélecteur de couleur de la méthode qui est fondamentalement aléatoires qui obtient une couleur à partir d'un prefabbed gamme de couleurs,
et les modifications que pixel spécifique à la nouvelle couleur.
J'espère que cette aide.
S'il vous plaît ne pas simplement copier-coller, tenter de reconstruire pour répondre à vos besoins ou vous n'aurez pas à apprendre quoi que ce soit.
TextureAtlas
, que vous créez un nouveauTexture
ou faut-il encore prendre laTextureAtlas
?Je dirais d'essayer et de comprendre, je n'ai pas essayé donc je n'ai aucune idée.
OriginalL'auteur Rose Blax
Une façon de faire c'est juste de la fixation d'un nombre maximum de joueurs, et faire T-shirts pour tout le monde, et les emballer avec de la texture de l'atlas et les ajouter dans un TextureRegion tableau.
Maintenant, vous ne devez basculer entre les indices.
Une autre façon de le faire est avec le lot.setColor
Et il suffit de régler la couleur du sprite de lot pour chaque T-Shirt vous dessinez, et après avoir tiré tous d'entre eux, mis le spritebatch de couleur blanc à nouveau.
Vous pouvez aussi le faire avec la classe Sprite avec la fonction setColor.
Si vos T-Shirts n'ont pas une très grande taille, et votre de joueur maximum le nombre est petit, je vous conseille la première méthode.
C'était juste mon avis, un jeu ne sera probablement pas avoir plus de 15 joueurs, de toute façon j'ai édité. Je voudrais utiliser cette méthode, car c'est le moyen le plus facile, et pour les petits t-shirts et de nombre de joueurs, comme je l'ai dit, est facile de simplement attribuer un indice pour chaque joueur..
Merci pour la réponse. Il ne serait pas un problème, si il ya seulement 1 T-Shirt de toutes les couleurs, mais le
Animation
du joueur contiennent certains plusTexture
s, donc ce n'est pas vraiment une option, ou au moins la dernière que je veux utiliser... LesetColor()
est intéressant, mais ne serait-il pas affecter l'ensemble de laTexture
?Il aura une incidence sur l'ensemble de la texture, mais le noir restera le noir et blanc va changer la couleur du lot. Vous ne devez pas utiliser toutes les autres couleurs parce que ceux qui seront mélangées et l'air bizarre.
Mais le résultat final devrait être un
Player
(que penser d'un homme) avec une couleur de T-Shirt. Ce n'est donc pas possible avec lesetColor
méthode?OriginalL'auteur Boldijar Paul
Rose Blax a fait vraiment un bon travail. Mais si vous voulez un moyen de le faire en utilisant SpriteBatch ou pour quelqu'un qui a la même question, mais ne voulez pas utiliser Pixmap...
Que j'aime beaucoup utiliser Pixmap, mais j'ai vu l'utilisation de "spritebatch/sprite.setcolor(r,g,b,a)" a donné à certains défis comme le changement de toutes les couleur de la texture au lieu de seulement le t-shirt... C'est pourquoi je suis venu ici, et oui, il est possible de changer seulement le t-shirt à l'aide de cette façon. Êtes-vous prêt? 😀
1 - Faire la partie voulez peindre, échelle de gris ou en blanc
2 - Séparer les parties de la peinture dans le texturepack ou une texture différente: dans le cas d'un t-shirt, vous avez besoin d'un pack où le t-shirt est de votre char... Oui, ce sera quelqu'un avec la tête, les bras et les jambes. Le t-short peut être dans le même pack ou pas. Mais gardez un trou entre puis mettre le t-shirt dans le futur.
il ressemblera à cela:
Découvrez cet actif
N'avez pas besoin d'avoir peur. Je sais que l'image est divisée ensemble characther, mais Si vous souhaitez modifier uniquement le t-shirt alors vous aurez divisé uniquement à partir de l'ensemble du corps.
3 - Vous attirera ils les deux, mais pas même TextureRegion, votre code ressemblera à ceci:
OriginalL'auteur Play Marques