2017-03-08 12 views
0

私は非常にシンプルなスパイクテクスチャを持っていますので、画面の下部に何度も繰り返していきたいので、幅に関係なく常に画面全体のサイズを塗りつぶします。 もちろん、すでにsetWrap()関数については既に説明しましたが、私が探している結果を得ることができません。libgdx - シンプルな繰り返しテクスチャ(setWrap())

This is the texture

And I'd like to get something like this

具体的に、私は、所与の画面の幅を有しており、画面の高さのパーセンテージとして表示されるテクスチャの高さを計算します。 今、テクスチャを0、0にして、画面の右側に達するまでそれを繰り返す必要があります(もちろん、画面で少しは切り取られるかもしれませんが、問題はありません。伸びを取得するテクスチャは)

私は「すでに」これまで

Texture spikesTex; 

spikesTex = new Texture("spike.png"); 
spikesTex.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); 

をこのコードを得た後、私はすでに

batch.draw(spikesTex, ...); 

ための異なるパラメータを試みたが、それらのどれも実際に働いていません。

答えて

0

私はあなたの要件を完了するためにこの方法で試しました。それがあなたに役立つかもしれません。

public class MAIN extends ApplicationAdapter { 
    SpriteBatch batch; 
    Texture img; 
    TextureRegion textureRegion; 
    float drawingWidth,drawingHeight; 

    @Override 
    public void create() { 
     batch = new SpriteBatch(); 
     img = new Texture("spike.png"); 

     img.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.ClampToEdge); 
     int width=Gdx.graphics.getWidth(); 

     textureRegion=new TextureRegion(img,0,0,width,img.getHeight()); 

     drawingWidth=width; 
     drawingHeight=Gdx.graphics.getHeight()*.2f; 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClearColor(1, 1, 1, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
     batch.draw(textureRegion,0,0,drawingWidth,drawingHeight); 
     batch.end(); 
    } 

    @Override 
    public void dispose() { 
     batch.dispose(); 
     img.dispose(); 
    } 
} 
+0

あなたのソリューションは、まさに私がためとして望んしませんでしたdrawingHeightはimg.getHeight()として小さくなりますが、テクスチャはまだx軸上に伸びています(または、y軸上に収まる方が良い)。 しかし、 "width"に "drawingHeight"を分割するのと同じ要素を乗算すると、それが機能します。どうもありがとう! – alektron

0

あなたが希望の幅と高さのparamsを与え、繰り返しテクスチャ自体を描くことができ、追加のTextureRegionを作成する必要はありません。

img = new Texture("spike.png"); 
    img.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); 
    ... 
    int imgPosX = 0;// x position where to draw 
    int imgPosY = 0;// y position where to draw 
    batch.draw(img, imgPosX, imgPosY, 0, 0, drawingWidth, drawingHeight); 
関連する問題