Libgdx SpriteBatch.SetProjectionMatrix使得spritebatch不能绘制

时间:2013-05-29 22:46:13

标签: java android libgdx

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();
    }

3 个答案:

答案 0 :(得分:3)

我找到了解决方案,但对于将来可能会遇到此类问题的人来说,问题出在我绘图的方法中 像这样的纹理:

代码:

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

PPuX,PPuY属于int类型,用于不同的屏幕尺寸,当我设置投影矩阵时,它正在搞乱spriteBatch

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

添加

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

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

Link to JavaDOC here