处理3 Box2D速度未按比例缩放比例

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

我目前正在尝试通过分辨率来简化我的游戏比例。我注意到,尽管更改分辨率并不能解决所有问题。例如,从1280x720变为1920x1080,跳跃距离会略有变化。我注意到的主要问题是当我以一定速度发射弹丸时。在较低的分辨率下,它似乎可以更快地在屏幕上移动,我不明白为什么会随着窗口大小的缩小而缩小。这是发射弹丸的代码的摘要:

m = new Box(l.pos.x+Width/32*direction2, l.pos.y-Height/288, Width/64, Height/72, true, 4);
              m.body.setGravityScale(0f);
              boxes.add(m);
              m.body.setLinearVelocity(new Vec2(Width*direction2, 0));

在这种情况下,m是我正在创建的盒子。在新的Box中(生成x坐标,生成y坐标,生成框的宽度,生成框的高度,是可移动的生成框,生成的框的类型)l.pos.x和l.pos.y是我从中触发生成框的位置。 Height和Width变量是在void draw()中更新的当前窗口的大小(以像素为单位),direction2为1或-1,具体取决于字符所面对的方向。

processing box2d game-physics pixel screen-resolution
1个回答
0
投票

很难说出其余的代码如何影响仿真而又看不到更多。

理想情况下,您希望使与物理相关的属性在尺寸方面与“处理”草图尺寸无关,但要保持比例,因此您可以简单地按比例放大相同尺寸的世界的渲染。如果您与鼠标进行交互,则坐标也将缩放,但是除了位置以外,还应保留其余物理属性。

如果Width是草图的width,根据我的代码收集,应该将其与线速度解耦:

m.body.setLinearVelocity(new Vec2(Width*direction2, 0));

您应该使用一个将相对于草图尺寸保持恒定的值。

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