2016-08-09 4 views
0

Disons que j'ai un Actor qui a une méthode de tirage:Libgdx - comment zoomer un rectangle/ligne (shaperenderer)

@Override 
public void draw(Batch batch, float parentAlpha) { 
     super.draw(batch,parentAlpha); 

     sr.begin(ShapeRenderer.ShapeType.Line); 
     sr.setColor(Color.RED); 
     sr.rectLine(getX(),getY(),getX() + getWidth(),getY(),3); 
     sr.end(); 
} 

Comme vous pouvez le voir, l'acteur dessine aussi une ligne rouge ci-dessous lui-même. Maintenant, quand je zoom l'appareil photo sur une scène, où l'acteur est, il devient plus grand - cela fonctionne mais pas son rectangle rouge.

Quand je mis debug() sur le Actor, il montre les lignes de débogage et les zoome aswell.

Qu'est-ce que j'essaie de réaliser?

J'ai besoin de zoomer la ligne aussi, le long de l'acteur.

S'il y a quelqu'un qui sait comment atteindre cet objectif, je vous serais reconnaissant;)

Répondre

0

Shaperenderer est similaire à lot. Il a sa propre matrice de coordonnées. Vous devez également définir la matrice de projection sur le shaperenderer.

shaperenderer.setProjectionMatrix(camera.combined); 

Cela fonctionnera probablement pour vous.

Mais lorsque le shaperenderer dessine via des vertex, la largeur des lignes peut ne pas changer même lorsque vous effectuez un zoom avant/arrière.

Vous pouvez modifier la largeur de ligne avec la fonction openGL.

Gdx.gl.glLineWidth(width); 

Et de surcroît je suggère de ne pas utiliser Shaperenderer car sa classe est assez chère et seulement recommandé pour les dessins de débogage.