Box2d 和 LIbgdx 如何计算每米像素?

问题描述 投票:0回答:1

我将 box2d 世界的正交相机设置为 21 宽和 12 高,这相当于 1 米 = 1 像素。但问题是我有另一个用于我的精灵和位图字体(对于我的 SpriteBatch)的正射相机,它是 640X360 像素,所以例如我有一个 1x1 米的身体然后我如何渲染那个身体顶部的纹理与 1x1 一样大米变成像素?

java libgdx box2d orthographic
1个回答
0
投票

首先,不要把相机单位当成像素,我建议你使用单相机和“每米单位”乘数进行转换。

将相机的宽度和高度设置为您希望看到的世界范围。使用

setSize()
方法设置精灵的大小,它将缩放您的纹理以被视为世界的比例;如果你想让一米成为屏幕高度的 1/10 设置一个变量,如
upm= camera.viewportHeight/10 //units per meter
这样您就可以设置例如大小2×1盒为
myBoxSprite.setSize(2*upm,upm)
。 box2d
Body
具有
setUserData()
getUserData()
方法,您可以使用这些方法将您的精灵(视觉游戏对象)链接到它们的 box2d 身体(物理身体)并在需要时访问它,并在您的游戏对象中制作引用变量以指向像 box2d body 和 sprite 这样当你想根据 body 的位置改变要绘制的 sprite 的位置时你可以使用它们

附注这是我对 SOF 的第一个回答,如果不是必须的,请原谅。

© www.soinside.com 2019 - 2024. All rights reserved.