我很确定渲染的问题是在render()
方法中的Pong.java(src / com / me / pong / Pong.java)中:
@Override
public void render() {
update();
Gdx.graphics.setTitle("Pong | " + (int)(1.0f/Gdx.graphics.getDeltaTime()) + " FPS" );
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
for(Entity e : entities) {
e.draw(batch);
}
batch.end();
}
因为sprite
中的Ball
或加载的纹理似乎没有任何问题。
这也可能是由于Ball
的定位开始,但我对此表示怀疑,因为这些点是正确的(在update()
中,我打印x坐标sprite
当它离开一边或另一边时,到目前为止我还没有看到意想不到的值。)
我已尝试在官方libGDX文档中找到更多信息,但无法找到任何内容,例如sprite与原始坐标的坐标系(它们似乎不同)。我也尝试过在其他StackOverflow线程e.g. this上提出的一些修正,但似乎没有任何改变程序的输出,至少不是表面上的。
主要问题是由于我正在尝试确定和修复某些未知原因而无法呈现Ball
。我有一些想法,但我不知道从哪里开始。
如果需要发布其他代码段以便进行更好的分析,我们很乐意发布它们。
答案 0 :(得分:2)
我看了一下代码。您创建以下凸轮:
camera = new OrthographicCamera(1, h/w);
如果你看一下API,那么cam的构造函数会获取Viewport hight和Viewport的宽度。您设置了hight = 1
和with = Gdx.graphics.getWidth()/Gdx.graphics.getHight();
然后将Ball
的位置设为Gdx.graphics.getWidth() / 2, Gdx.graphics.getHight() / 2
。由于您只查看从P1(0/0)
到P2(1/0.x) (depends on screenresolution)
的坐标,因此无法看到您的对象,因此它超出了范围。将摄像机视口设置为80宽度和45高度(16/9)。然后你可以将你的对象放在你自己的世界坐标系中(40,22.5位于中间)。