Ich Sprites uppon Körper, mit dieser Methode (in meinem Körper Wrapper) Zeichnung:Draw Sprite auf Körper - Kameraüberwachung Hafen und die Größe
private void drawBaseSprite(Batch batch){
Sprite baseSprite = this.getBaseSprite();
Vector3 bodyPixelPos = camera.project(new Vector3(body.getPosition().x, body.getPosition().y, 0));
// TODO: 17/11/16 Review this
float w = scale * (baseSprite.getTexture().getWidth())/camera.zoom;
float h = scale * (baseSprite.getTexture().getHeight())/camera.zoom ;
baseSprite.setSize(w,h);
baseSprite.setOrigin(w/2, h/2);
baseSprite.setPosition(bodyPixelPos.x -w/2, bodyPixelPos.y - h/2);
baseSprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);
baseSprite.draw(batch);
}
Alles ist gut, bis ich die Fenster versuchen, Ändern der Größe. Nun, ich bin nach dieser Resize-Logik (implementiert Bildschirm):
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true);
stage.camera.setToOrtho(false, Constants.VIEWPORT_HEIGHT *width/(float)height, Constants.VIEWPORT_HEIGHT);
}
Vor Resize: Nach Resize (größere Breite):
Ich finde das absurd, weil dies:
float w = scale * (baseSprite.getTexture().getWidth())/camera.zoom;
float h = scale * (baseSprite.getTexture().getHeight())/camera.zoom ;
ändert sich nicht, während die Bilder x-skaliert sind.
Dank für die Beantwortung, aber ich verfolgt das Sprite Abmessungen: Gdx.app.log (this.getClass() getSimpleName() "w: "+ w +" h". + H); und sie ändern sich auch nach der Größenänderung nicht, weil sich der Zoom der Kamera nicht ändert (nur der Anzeige-Port wird geändert). – neogineer