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();
}
答案 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-轴向上或向下。"