【问题标题】:libGDX Sprite failing to renderlibGDX Sprite 无法渲染
【发布时间】:2014-01-28 06:37:35
【问题描述】:

The full code is on GitHub.

我相当肯定渲染的问题在于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();
    }

因为Ball 中的sprite 或加载使用的纹理似乎没有任何问题。

这也可能是由于 Ball 的定位开始,但我对此表示怀疑,因为这些点是正确的(在 update() 中,我从 sprite 打印 x 坐标时它从一侧或另一侧消失,到目前为止我还没有看到意外的值)。

我尝试在官方 libGDX 文档中找到更多信息,但找不到任何关于精灵坐标系与原始坐标系的信息(它们似乎不同)。我还尝试了在其他 StackOverflow 线程 e.g. this 上提出的一些修复,但似乎没有改变程序的输出,至少表面上没有。

主要问题是由于某种未知原因无法渲染Ball,我正在尝试确定和修复。我有一些想法,但我不知道从哪里开始。

如果需要发布其他 sn-ps 以进行更好的分析,我很乐意发布。

【问题讨论】:

  • 你的实体是什么?它是 libgdx 类的子类吗? entity.draw(batch) 的代码是什么?你在哪里设置相机的位置?
  • 尺寸怎么样?这段代码没有错
  • @Springrbua 您可以在 src/com/me/pong/Entity.java 找到实体。这是一个简单的界面,应该包含任何游戏实体的最基本方法。如果你愿意,我会把它添加到主帖中。

标签: java libgdx


【解决方案1】:

我查看了代码。您创建以下凸轮: camera = new OrthographicCamera(1, h/w); 如果您查看 API,cam 的构造函数采用视口高度和视口宽度。您设置了 hight = 1with = Gdx.graphics.getWidth()/Gdx.graphics.getHight(); 然后将Balls 位置设置为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在中间)。

【讨论】:

  • 啊!那解决了,谢谢。关于如何“移动”相机以使窗口左下角为 (0.0, 0.0) 的任何想法?试图用这种有点不直观的定位来弄清楚一切都属于哪里是非常令人沮丧的。
  • 您必须将凸轮位置设置为 camWidth / 2 , camHeight / 2。那是因为摄像机 0,0 在其中间。
猜你喜欢
  • 2016-02-27
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多