Camera libGDX的相机变焦问题

Camera libGDX的相机变焦问题,camera,libgdx,zooming,Camera,Libgdx,Zooming,嘿,伙计们,我正在用libGDX开发一款android游戏,我这里有一个缩放问题。这基本上是一款滑雪狩猎风格的2D游戏,我想在高度变化时实现放大/缩小效果。用正交摄影机可以解决这个问题吗?或者我应该实时更改对象的大小(因为我仍然希望将背景保持在固定的大小)?如果摄影机。缩放无法解决您的问题,您可以使用 未修改批处理以绘制背景,并使用batch.getProjectionMatrix().cpy().scale(yourScaleVariableX,yourScaleVariableY,0) 只模

嘿,伙计们,我正在用libGDX开发一款android游戏,我这里有一个缩放问题。这基本上是一款滑雪狩猎风格的2D游戏,我想在高度变化时实现放大/缩小效果。用正交摄影机可以解决这个问题吗?或者我应该实时更改对象的大小(因为我仍然希望将背景保持在固定的大小)?

如果
摄影机。缩放
无法解决您的问题,您可以使用 未修改批处理以绘制背景,并使用
batch.getProjectionMatrix().cpy().scale(yourScaleVariableX,yourScaleVariableY,0)
只模拟你想要的项目,各种各样的,如果你希望得到帮助的话就不需要了

简单的例子:

可变类

Matrix4 testMatrix;
float yourScaleVariableX;
float yourScaleVariableY;
示例渲染方法

//

我认为更有效的方法是更改矩阵,从而调整所有对象的大小

我希望能解释清楚

编辑


我在写答案时没有意识到,您可以在编辑原始矩阵供以后使用之前保存它,或者使用
batch.setProjectionMatrix(camera.combined)
要恢复

那么
Camera.zoom
呢?我需要保持背景静止,这样Camera.zoom就不是一个好主意,Angel向我展示了一个更好的解决方案。谢谢。好吧,你可以把camera.zoom设置为1,然后绘制背景,然后将其更改为你想要的任何值,然后绘制其他对象。你是说像batcher.start();牵引杆接地();batcher.end();相机。变焦(比例);camera.update();batcher.setProjectionMatrix(camera.combined);batcher.start();drawItems();batcher.end();我尝试过这个方法,但背景仍然会随着其他项目进行缩放:(与此完全相同,但使用camera.zoom(1f);camera.update();batcher.setProjectionMatrix(camera.combined);在呈现背景之前,非常感谢您的帮助!我很快会处理它,希望它能起作用。我已经尝试过,但我声明了两个批处理程序来处理此问题,现在它工作正常,这会带来任何进一步的问题吗?谢谢您的帮助!@Cloud我不太懂英语抱歉,但是当您说您声明了两个批处理程序时,如果您所做的是我所举的示例,那么您并没有声明两个bacth,您正在使用相同的bacth,但您正在修改,尽管最好尽可能在一个对batch.begin batch.end的调用中创建所有绘图,但我认为两个begin一个接一个的调用不会产生太大的影响,而不会过度使用。@Cloud yo你也可以尝试1-batch.begin 2-draw.background,3-testMatrix=batch.getProjectionMatrix()4-batch.setProjectionMatrix……(testMatrix);5-yourItem.draw..6-batch.end。但是如果这会导致在批处理开始中更改矩阵时出现某种错误,你可以尝试一下,希望能有所帮助。
batch.begin();

yourBackground.draw...

batch.end();

batch.begin();

testMatrix = batch.getProjectionMatrix().cpy().scale (yourScaleVariable, yourScaleVariable, 0);

batch.setProjectionMatrix(testMatrix);

yourItem.draw..

batch.end();