数日前、LibGdx でスクロールする方法を見つけました。今、私は関連することをしようとしています。背景を繰り返したい。私のスクロールは船を追いかけます(エースシップゲームです)。背景には、テクスチャとして読み込まれた宇宙の写真があります。船がバックゴーランドの端に到達すると、船は進み続け、もう背景はありません。ラップについて読んだことがありますが、それがどのように機能するのかよくわかりません。私はそれをしました:
px=new Pixmap(Gdx.files.internal("fondo.jpg"));
background=new Texture(px);
background.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);
そして、私の render メソッドで
spriteBatch.begin();
spriteBatch.draw(background,0,0,500,50);
drawShip();
spriteBatch.end();
もちろん、それは機能しません。背景を一度だけ描画します。このラップ メソッドを機能させる方法がわかりません。何か助けはありますか?
解決
私はそれを考え出した。素敵なコードではありませんが、機能します。
まず、同じ画像で 2 つのテクスチャを宣言します
bck1=new Texture(Gdx.files.internal("fondo.jpg"));
bck2=new Texture(Gdx.files.internal("fondo.jpg"));
また、このように 2 つの変数を宣言して、各 bck の位置の X 値を指定します
int posXBck1=0,posXBck2=0;
次に、それを Render() で使用します
public void calculoPosicionFondos(){
posXBck2=posXBck1+ANCHODEFONDO;
if(cam.position.x>=posXBck2+cam.viewportWidth/2){
posXBck1=posXBck2;
}
}
どこ:
ANCHODEFONDOは私の背景の幅です
カムは OtrhoCam です。
つまり、カムが bck2 にある場合 (これは、bck1 がもう見えないことを意味します)、位置を変更し、bck1 に bck2 の位置を与え、次のレンダリング ループで bck2 を再計算します。
次に、レンダリング モードで両方のバックをペイントします。