【发布时间】:2015-12-29 21:56:40
【问题描述】:
我正在尽力将纹理渲染到屏幕上。我也尝试过渲染一个精灵,但没有一个成功。据我了解,相机需要一个视口,并且在渲染世界时最好使用世界单位。我明白有关单位的想法,这是有道理的。但如果你说你的世界是 100X100,那么你的精灵背景也必须是 100X100。我仍然不明白应该如何覆盖整个设备屏幕(安卓手机)。我想以不同的分辨率提供资产或实施拉伸视口可能是理想的。另外,我正在尝试实现私有 moveCamera 方法。我的目标是 让相机以随机方式移动,显示我的部分纹理。当我第一次运行代码时,我看到相机移动了,然后屏幕移动了 变红然后变黑。我想我可能不得不夹住相机以迫使它保持在资产的范围内。请帮我设置这个功能。
这是我的代码:(无法渲染)
public class myGdxGame extends ApplicationAdapter{
@Override
public void Create(){
scenery= new Texture...;
sprity= new Sprite(new Texture(..));
sprity.setPosition(0f,0f);
sprity.setSize(100f,100f);
w= Gdx.graphics.getWidth();
h= Gdx.graphics.getHeight();
moveX=0f;//float value
moveY=0f;//float value
time= System.currentTimeMillis();
camera= new OrthoGraphicCamera(30,30*(h/w));
camera.position.set(camera.viewportWidth/2f,camera.viewportHeight/2f,0);
camera.update();
}
@Override
public void resize(int width, int height) {
camera.viewportWidth = 30f;
camera.viewportHeight = 30f * (height/width);
camera.update();
}
@Override
public void render () {
moveCamera();
camera.update();
batch.setProjectionMatrix(camera.combined);
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(scenery, 0, 0);
batch.end();
}
public void moveCamera(){
if(System.currentTimeMillis()-time>2000){
double random=Math.round(Math.random()*100);
double random2=Math.round(Math.random()*100);
double d=random/10;
double e=random2/10;
int f=(int)d;
int g=(int)e;
moveX=moveX+f;
moveY=moveY+g;
time=System.currentTimeMillis();
camera.translate(moveX,moveY,0);
camera.update();
}
}
}
【问题讨论】:
标签: android libgdx textures rendering sprite