2017-07-25 1 views
0

est-il possible de changer la couleur d'une texture en une couleur aléatoire et comment puis-je faire cela si c'est possible? Je pense qu'une autre façon est de créer une feuille de sprite avec l'objet dans différentes couleurs et changer la région au hasard, mais je ne sais pas avec certitude.Changer la couleur d'une texture

+0

Avec PixMap, vous pouvez entrer dans les pixels individuels pour le changer. Je ne suis pas sûr de ce que vous voulez exactement. – Madmenyo

Répondre

0

Si vous avez une texture blanche, vous pouvez juste changer la couleur de spritebatch pour teinter l'image.

batch.setColor(new Color(r,g,b,a)); 
batch.draw(texture, x, y); 
batch.setColor(new Color(1,1,1,1)); // reset to default colour 
0

Vous ne pouvez pas changer la couleur de Texture parce que c'est dans la mémoire du GPU. Vous ne pouvez pas modifier directement leurs pixels quand vous le voulez car ils sont dans un contexte OpenGL. Vous pouvez utiliser Pixmap qui est une carte de pixels conservés dans la mémoire locale avec quelques méthodes pour effectuer toutes les modifications.

En autre façon, vous pouvez réaliser vos besoins en utilisant ces méthodes suivantes:

  1. Vous pouvez utiliser setColor() qui est surchargé méthode de Batch Interface.

    Ce sont le prototype de la méthode setColor.

    public void setColor (Color tint); 
    public void setColor (float r, float g, float b, float a); 
    public void setColor (float color); 
    

    Définissez la couleur de la SpriteBatch pour votre texture que vous voulez montrer de couleur, et après avoir dessiné mis la couleur Spritebatch à nouveau blanc.

OU

  1. Vous pouvez utiliser Sprite qui maintient la géométrie, la couleur et l'information de texture pour le dessin 2D sprites.

    Texture myTex=new Texture("badlogic.jpg"); 
    Sprite sprite=new Sprite(myTex); 
    sprite.setColor(Color.BLUE); 
    

Réglage couleur aléatoire est juste petite logique, que ce soit vous voulez définir la couleur aléatoire à la fois ou avec une durée de retard.

+0

Comment puis-je dessiner un sprite sur une scène? Avec stage.getBatch() .draw? – user8340536

+0

'sprite.draw (stage.getBatch())', également garder votre tirage entre 'begin()' et 'end()'. Si vous utilisez scene2d, vous devriez utiliser 'Image' au lieu de' Sprite' – Aryan