【问题标题】:libgdx sprite dimension meters or pixels?libgdx精灵尺寸米或像素?
【发布时间】:2014-07-26 23:15:14
【问题描述】:

我一直在阅读《学习 Libgdx 游戏开发》。我尝试了以下 sn-p:

// First the camera object is created with viewport of 5 X 5. 
OrthographicCamera camera = new OrthographicCamera(5, 5);

我有一个尺寸为 32 像素 x 32 像素的纹理。我用这个组成了一个精灵

Sprite spr = new Sprite(texture);

// I set the size of Spr as 
spr.setSize(1,1);

根据这本书,上面的尺寸是米而不是像素。

我不明白从米到像素的映射是如何在屏幕上发生的?当我在屏幕上绘制精灵时,尺寸甚至不到半米,更不用说1了。

此外,底层纹理的大小为 32 X 32 像素。当我调整大小时,我的精灵的大小也会改变。

那么,spr.setPosition(x, y) 的维度是多少?它们是米还是像素?

【问题讨论】:

  • 很确定你误解了什么。渲染器使用米作为像素单位是没有任何意义的。我认为您正在考虑物理引擎 box2d,通常说它使用米作为单位。通常有一个像素到米的转换比率用于将物理引擎缩放到屏幕。见stackoverflow.com/questions/14208797/…

标签: java android libgdx game-engine


【解决方案1】:

该库使用像素来表示纹理大小等维度,并使用米表示游戏中的单位。

setPosition 将移动游戏单位中的对象。当您移动对象 X 游戏单位时,像素数会根据相机的投影矩阵以及其他设置而变化。

如果您考虑一下,以像素为单位移动是没有意义的。如果相机 A 的放大倍数大于相机 B,则在每个相机的视图中移动 X 个像素将需要移动两个不同的量。

编辑:抱歉,我在您上面的理解中做了一些假设,部分误解了这个问题,并坦率地使用了误导性的措辞。关键是单位的米约定不是内置的,它是您强制执行的,因为 Box2D 中一像素与一米的比例没有意义。我使用的措辞暗示内部 setPosition 关心米,但您应该自己进行缩放。通常我在 libgdx 中看到的比率是 30 像素 = 1 米。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多