【问题标题】:How to scale with the camera in Libgdx如何在 Libgdx 中使用相机进行缩放
【发布时间】:2015-10-08 16:07:31
【问题描述】:

我正在尝试将 Sprite 渲染到我的手机屏幕上。我的世界大小为 100x100 单位,我想将其分成 10 个相等的矩形(每个 10 x 100 单位)。

它们中的每一个都将被视为全屏,我希望相机能够根据角色移动从一个滚动到另一个(当游戏中的角色达到矩形的一半宽度时)。

问题在于相机对 Sprite 区域放大太多,渲染的 Sprite 不遵守 PNG 文件的纵横比。

我是否应该使用形状渲染对象(例如与手机屏幕大小相同的矩形)并用部分 Sprite 填充矩形,然后以某种方式缩放此形状渲染矩形以保持屏幕的纵横比PNG文件?

请告诉我什么是最好的?

【问题讨论】:

  • 你好 - 给我们看一些截图来展示它的样子 - 最好的例子也是它实际上应该是什么样子
  • 我认为扩展可能太昂贵而无法实施。也许我应该将 PNG 文件创建为 9-patch 并注意绘制圆圈,因为一旦拉伸以适合手机屏幕,它们很可能会显示为椭圆形。你怎么看

标签: android libgdx rendering viewport


【解决方案1】:

如果您不指定单位,则正交相机具有可访问的zoom 字段。但最好始终明确指定您想要的内容。

如果您想让 10 个“东西”彼此相邻并适合相机,我会指定。

int thingsWidth = 1; //1 could stand for meter
int amountOfThings = 10;

//give you texture/image/sprite the width of "thingsWidth"

@override
public void resize(float width, float height)
{
  float camWidth = thingsWidth * amountOfThings;
  //You probably want to keep the aspect ration of the window
  float camHeight = camWidth * ((float)height / (float)width);

  camera.viewportWidth = camWidth;
  camera.viewportHeight = camHeight;
  camera.update;
}

这基本上是相机与常规 screenViewport 的工作方式,因为我们没有指定特定的视口。

我不确定你想要达到什么目标,但 Scene2D Table 也可以对你有利。您只需设置table.setFillParent(true);,然后使用table.add(someActor).expand().fill() 之类的方式将10 张图像添加到表格中。现在您的所有演员将完全展开并垂直填充并共享水平空间。现在,您如何设置相机并不重要,因为表格会负责布局。

【讨论】:

  • 所以这个 Table 类对象将接受 10 个不同的 Sprites 或 Textures,每个 Sprites 或 Textures 都充当一个角色,并将同时显示在手机屏幕上,垂直增长以填充它以及水平增长。我不能创建它,以便每个 Actor 每次都可见,其中每个 Actor 填充整个屏幕,尊重创建 Sprite 或纹理的 PNG 文件的纵横比。此外,是否可以滚动浏览它们。 @mennoGouw
  • @i_o 我的方法展示了如何将它们全部放在屏幕上并排在一起。你的精灵是 1:10,所以它不会被填充,除非被拉伸或者你有一些奇怪的 1:10 设备。这就是为什么我认为你希望它们彼此相邻。
  • @i_o 在我编辑我的帖子之前,我想知道为什么你“需要”它们彼此相邻但一次只显示一个?也许您只是在寻找ScrollPane。据我了解,您可以将它们放在某个地方并在用户操作时显示正确的图像。
  • 因为我想在游戏中实现scene2d。我想将这 10 个区域用作我的游戏背景并根据角色位置滚动它们。我想我会尝试为背景创建一个大的 PNG 文件,定义纹理区域并单独显示每个区域,以便它填满整个手机屏幕。我还想通过它们循环以获得有限的背景,直到角色到达关卡的末尾。 @mennogouw
  • 如果您愿意,您可以只设置一个超出屏幕的纹理并使用background.setWrap(TextureWrap.Repeat, TextureWrap.Repeat) 现在根据播放器的位置更改较大纹理的source。瞧,palax 映射变得容易;)。检查我的这个答案:stackoverflow.com/questions/14603759/…
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
相关资源
最近更新 更多