【问题标题】:A camera zoom issue with libGDXlibGDX 的相机变焦问题
【发布时间】:2014-12-15 05:39:42
【问题描述】:

大家好,我正在使用 libGDX 开发一款 android 游戏,但我遇到了缩放问题。它基本上是一个滑雪狩猎风格的 2D 游戏,我想在高度变化时实现放大/缩小效果。可以用 OrthoGraphicCamera 解决这个问题吗?或者我应该实时更改对象的大小(因为我仍然想保持背景的大小不变)?

【问题讨论】:

  • Camera.zoom 呢?
  • 好吧,我需要保持背景静止,这样 Camera.zoom 就不是一个好主意,Angel Angel 向我展示了一个更好的解决方案。谢谢。
  • 好吧,您可以将 camera.zoom 设置为 1,然后绘制背景,然后将其更改为您想要的任何值并绘制其他对象。
  • 你的意思是像batcher.start(); drawBackground();batcher.end();camera.zoom(scale);camera.update(); batcher.setProjectionMatrix(camera.combined);batcher.start();drawItems();batcher.end();我已经尝试过了,但背景仍然会随其他项目一起缩放:(
  • 完全一样,但使用 camera.zoom(1f);camera.update(); batcher.setProjectionMatrix(camera.combined);在渲染背景之前

标签: camera libgdx zooming


【解决方案1】:

如果Camera.zoom没有解决你的问题,你可以使用 批处理未修改以绘制您的背景,并使用batch.getProjectionMatrix().cpy().scale (yourScaleVariableX, yourScaleVariableY, 0); 仅模拟您想要的项目,不同的变量,而不是如果您希望得到帮助。

简单示例:

变量类

Matrix4 testMatrix;
float yourScaleVariableX;
float yourScaleVariableY;

示例渲染方法

.//

batch.begin();

yourBackground.draw...

batch.end();

batch.begin();

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

batch.setProjectionMatrix(testMatrix);

yourItem.draw..

batch.end();

我认为它更有效,改变矩阵,调整所有对象的大小。

希望能解释清楚。

编辑

我写答案的时候没有意识到,你可以存储保存原始矩阵,然后再编辑以备后用,或者使用batch.setProjectionMatrix (camera.combined);恢复

【讨论】:

  • 非常感谢您的帮助!我很快就会开始工作,希望这能奏效。
  • 我试过了,但是我声明了两个批处理器来处理这个问题,现在它工作正常,这会带来任何进一步的问题吗?感谢您的帮助!
  • @Cloud 我不太懂英文对不起,但是当你说你声明两批时,如果你所做的是我放的例子,那么你不是在声明两批你是使用相同但您正在修改,尽管最好尽可能在对 batch.begin batch.end 的调用中创建所有绘制我不认为调用两个开始一个接一个地影响太多,而不会过度使用,我想。
  • @Cloud 你也可以试试 1-batch.begin 2- draw.background, 3 -testMatrix = batch.getProjectionMatrix () 4-batch.setProjectionMatrix ...... (testMatrix); 5-yourItem.draw .. 6-batch.end。但如果这会产生某种错误,在批处理开始时更改矩阵,但您可以尝试它希望它会有所帮助。
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多