2017-10-31 5 views
2

とscallingありません元の背景から分離してテクスチャを貼り付けたので、オブジェクトは元のサイズから正しいサイズになります。Libgdxスプライトは、私は画面がでrezisedれるたびに更新するストレッチのビューポートを持つビューポート

私はこのオブジェクトを(スプライトを使用して)描画すると、各スプライトの縮尺を2.25に設定する必要があります。それ以外の場合、スプライトは小さくなります.1つのカメラを使用しているので、/viewport、単一バッチ、および呼び出しのバッチ.setProjectionMatrix(camera.combined)。

私は間違っていますか?あなたが正しくカメラとビューポートを使用していない

public static Dimension virtualResolution = VirtualResolution.RES_768x432.resolution; 
public static Dimension screenResolution = new Dimension(1920, 1080); 

camera = new OrthographicCamera(); 
camera.setToOrtho(false, GameSettings.virtualResolution.getWidth(), GameSettings.virtualResolution.getHeight()); 
camera.update(); 

viewport = new StretchViewport(GameSettings.screenResolution.getWidth(), GameSettings.screenResolution.getHeight(), camera); 
viewport.apply(); 

答えて

2

これは私がビューポートとカメラを作成する方法です。

カメラには、setToOrthoの方法で実際に指定する「表示幅」と「高さを表示」があります。ただし、ビューポートを使用しているときにカメラにそのようなものを設定する必要はありません。

代わりに、OrthographicカメラとともにこれらのサイズパラメータをViewportコンストラクタに与えます。

gamecam = new OrthographicCamera(); 
gamePort = new StretchViewport(V_WIDTH, V_HEIGHT, gamecam); 
gamePort.apply(); 
gamecam.position.set(new Vector3(100, 100, 0)); 

ゲームでは、画面のサイズが変更されない限り、常にカメラで作業します。

画面のサイズを変更すると、コードは次のようになります。あなたの質問に

@Override public void resize(int width, int height) { 
    gamePort.update(width, height); // The third boolean parameter 
            // centers the camera 
} 

あなたは、2つのサイズ、画面解像度のオフに基づいて1、仮想幅と高さ他を使用。あなたは1つしか使用せず、これはビューポートに渡されます。

これでスプライトが正しくスケールされるはずです。

この回答が役立ちました。それ以上のご質問がある場合は、下記のコメントをお寄せください。

関連する問題