【问题标题】:LibGDX + Box2D | Camera too bigLibGDX + Box2D |相机太大
【发布时间】:2014-06-17 02:24:13
【问题描述】:

我现在使用一台相机来绘制 Box2DDebugRenderer,另一台用于从 tmx 绘制地图。文件。我的问题是,尽管相机具有相同的定义。用于绘制地图的相机在屏幕上太大了。

问题的截图:

box2dCam 的定义:

b2dCam = new OrthographicCamera();
b2dCam.setToOrtho(false, Game.getWidth() / PPM, Game.getHeight() / PPM);
b2dCam.update();

普通相机的定义:

cam = new OrthographicCamera();
cam.setToOrtho(false, Game.getWidth() / PPM, Game.getHeight() / PPM);
cam.update();

PPM(每米像素)为 32。

代码游戏类(常规相机正在那里定义!):

http://pastebin.com/FcCD5SLZ

Play-GameState 的代码(box2dCam 得到定义,两个凸轮也移动到玩家位置):

http://pastebin.com/FcCD5SLZ

有人知道为什么会这样吗?

【问题讨论】:

  • 问题的屏幕截图:i.imgur.com/B4eaz3r.png(棕色表面就在地图的左下角。)
  • 您是否尝试过降低地图相机的每米像素数?

标签: java android libgdx


【解决方案1】:

box2dCam 的定义:

b2dCam = new OrthographicCamera();
b2dCam.setToOrtho(false, Game.getWidth() / PPM, Game.getHeight() / PPM);
b2dCam.update();

普通相机的定义:

cam = new OrthographicCamera();
cam.setToOrtho(false, Game.getWidth(), Game.getHeight()); // <--
cam.update();

应该是这样的。不要将平铺地图的相机视口除以 PPM 比率,因为这里您希望它是 1 个单位 = 1 px。

【讨论】:

  • 这样就行了。但它仍然有点偏离。看起来相机的原点位于屏幕中间。 i.imgur.com/ijiWtvj.png
  • 是的。它的起源还有哪里?
  • 确实如此。但是为什么box2d相机在屏幕中间没有它的Origin呢?
  • 原产地到底是什么意思?原点始终位于 (0, 0)。默认情况下,相机视口的中心是屏幕的中心。您可以将相机的位置设置为任何您想要的。 b2dCam.position.set(player.getPosition()); cam.position.set(player.getPosition().cpy.scl(PPM))。请注意,您现在必须缩放“像素”相机的位置。
  • 谢谢!完美的。但需要注意的是:它是“.cpy().scl(PPM)”而不是“.cpy.scl(PPM)”。尽管如此,它现在可以工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-02
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
相关资源
最近更新 更多