2016-08-09 57 views
0

Lassen Sie uns sagen, dass ich eine Actor haben, die ein Unentschieden Methode hat:Libgdx - wie ein Rechteck/Zeile (shaperenderer) vergrößern

@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(); 
} 

Wie Sie sehen können, der Schauspieler zieht auch eine rote Linie unter sich. Jetzt, wenn ich die Kamera auf einer Bühne zoome, wo der Schauspieler ist, wird er größer - es funktioniert , aber sein rotes Rechteck nicht.

Als ich debug() auf den Actor gesetzt, zeigt es die Debug-Linien und zoomt sich als gut.

Was versuche ich zu erreichen?

Ich muss die Linie auch entlang des Schauspielers zoomen.

Wenn es jemanden, der weiß, wie dies zu erreichen, wäre ich dankbar;)

Antwort

0

Shaperenderer ist ähnlich zu Charge. Es hat eine eigene Koordinatenmatrix. Sie müssen die Projektionsmatrix also auch auf shaperrenderer setzen.

shaperenderer.setProjectionMatrix(camera.combined); 

Es wird wahrscheinlich für Sie arbeiten.

Bei der Erstellung von Shapentrenderern über Scheitelpunkte ändert sich die Linienbreite möglicherweise nicht, selbst wenn Sie die Ansicht vergrößern/verkleinern.

Sie können die Linienbreite mit der openGL-Funktion ändern.

Und zusätzlich im Vorschlag, nicht Shapentrender wegen seiner recht teuren Klasse zu verwenden und nur für Debug-Zeichnungen empfohlen.