我正在尝试移动相机滚动到我的游戏中但没有任何反应。
我的代码:
public class Terrain implements Screen {
@Override
public void show() {
widht = Gdx.graphics.getWidth();
height = Gdx.graphics.getHeight();
cam = new OrthographicCamera();
cam.setToOrtho(true, widht, height);
batch = new SpriteBatch();
batch.setProjectionMatrix(cam.combined);
render = new ShapeRenderer();
render.setProjectionMatrix(cam.combined);
render.setAutoShapeType(true);
cam.update();}
@Override
public void render(float delta) {
processInput();
Gdx.gl.glClearColor(0.929f, 0.819f, 0.772f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(cam.combined);
batch.begin();
render.begin();
render.rect(0,50,1000,25);
render.end();
batch.end();
}
private void processInput() {
if(Gdx.input.isTouched()){
cam.translate(25,0);
cam.update();
}
}
当我点击屏幕时,没有任何反应。如果我查看相机的位置,她移动得很好,但矩形仍然在同一个地方。
对我的错误有任何想法吗?
答案 0 :(得分:0)
这是因为ShapeRenderer
默认为相机坐标。
如果要更改此设置,则需要将渲染器上的投影矩阵设置为其他内容。
例如:
@Override
public void render(float delta) {
processInput();
Gdx.gl.glClearColor(0.929f, 0.819f, 0.772f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(cam.combined);
batch.begin();
// Switch to the batch instead of the default.
render.setProjectionMatrix(batch.getProjectionMatrix());
render.begin();
// Changed the size of the rectangle so it's easier to see.
render.rect(100, 50, 100, 25);
render.end();
batch.end();
}
现在,当您点击屏幕时,矩形将显示为向左移动,直到它不再可见。