【问题标题】:Libgdx SpriteBatch.SetProjectionMatrix makes spritebatch not drawLibgdx SpriteBatch.SetProjectionMatrix 使 spritebatch 不绘制
【发布时间】:2013-05-29 22:46:12
【问题描述】:

SpriteBatch.SetProjectionMatrix(cam.combined) 使 Spritebatch 不绘制块和我的角色,但摄像机移动工作,但如果我不使用这行代码,一切都被绘制但摄像机不工作?有谁知道解决方案,因为如果根本看不到它。

编辑:很抱歉第一篇文章很混乱

这是一段比较麻烦的代码:

public void render()
    {


        cam.update();
        spriteBatch.setProjectionMatrix(cam.combined);



        spriteBatch.begin();

        drawBlocks();
        drawBob();


        spriteBatch.end();
        cam.position.x = world.bob.GetPosition().x;
        cam.update();

        drawCollisionBlocks();


        if(debug)
            drawDebug();
    }

【问题讨论】:

  • 欢迎来到 StackOverflow,阿多!这是一段非常长的 SO 代码。回答你的问题真的有必要吗?如果你能比这更缩小问题的范围,人们会更容易提供帮助。 (另外,当您插入代码时,使用 ` 字符将其包围或突出显示它并按 ctrl+K 而不是使用 >,这表示引用。我已在您当前的帖子中修复了此问题)

标签: java android libgdx


【解决方案1】:

我找到了解决方案,但是对于将来可能遇到此类问题的任何人,问题在于我正在绘制的绘图方法 像这样的纹理:

代码:

 spriteBatch.draw(bobFrame, bob.GetPosition().x * PPuX, bob.GetPosition().y*PPuY ,Bob.SIZE*PPuX , Bob.SIZE*PPuY );

PPuX,PPuY 是 int 类型,用于不同的屏幕尺寸,当我设置投影矩阵时,这会弄乱 spriteBatch

【讨论】:

  • 感谢您发布问题声明!您能否通过添加修复问题的代码来增强您的答案?
【解决方案2】:

spriteBatch.setProjectionMatrix(cam.combined) 让 spriteBatch 使用cam 指定的坐标系而不是默认坐标系。这是因为两者的坐标系不同,cam.combined 会为您计算。

【讨论】:

  • 我明白,但我的问题是为什么将 spritebatch 的投影矩阵设置为 cam.combined 会使 spritebatch 不绘制我的纹理?因为当我评论这行代码纹理是正常绘制时,你看到我能做的任何解决方案吗??
【解决方案3】:

我相信您实际上正在绘制精灵,但是您没有看到它们,因为您的相机视口未设置(即您正在查看错误的坐标区域)。

添加

cam.setToOrtho(false); //true to invert y axis

"使用适合屏幕分辨率的视口将此相机设置为正交投影,以 (Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2) 为中心,y 轴朝上或向下。”

Link to JavaDOC here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-03
    • 2014-04-12
    • 2014-05-10
    • 2015-02-11
    • 2018-04-14
    • 1970-01-01
    • 2014-09-05
    • 2013-12-04
    相关资源
    最近更新 更多