【问题标题】:Converting Pixels to Metres Advanced将像素转换为米高级
【发布时间】:2017-11-20 13:33:48
【问题描述】:

我无法在我的游戏中将像素转换为米

how many pixels is a meter in Box2D?

是我的问题的一个例子,但没有解决它。

这是因为这个解决方案虽然有效,但不会跨浏览器,也就是说,如果转换率是恒定的,比如 50 像素到一米,那么在分辨率为 400x800 的设备上,对象会显得很大,而在另一台分辨率为 4000x8000(夸张)的设备上,物体会很小。

我可以理解一些解决方案,但我发现这很难实现的主要原因是一个浏览器或手机可能是 16:9 的比例,而另一个可能是 14:7,这些不同的比例是踢球者,因为我的整个游戏都在屏幕上,因为它不是滚动游戏,它只是一个简单的物理游戏。

因此,我知道将世界缩小并在渲染时将其转换回来更容易,但是我提到的这些问题让我很困惑,如果有人有任何可行的解决方案,我正在徘徊.

【问题讨论】:

    标签: javascript resolution


    【解决方案1】:

    因为你的

    整个游戏都在屏幕上进行

    我建议你以下:

    决定您需要多少“米”的窗口宽度。假设你已经决定:

    任何窗口宽度(W)总是N“米”

    然后k = W/N 其中k 是一个缩放乘数,表示1“米”内的窗口宽度的一部分。

    所以如果W = 400pxN = 100m 你有k = 400px/100m = 4px/m。 当其他屏幕为W = 4000px 时,您拥有k = 40px/m

    这样,您可以通过将“米”中的尺寸乘以k 将“米”转换为像素,并且您的对象将始终缩放到屏幕尺寸。

    JavaScript 中看起来像:

    var N = 100; // window width in "meters"
    var k = window.innerWidth / N; // px in 1m
    
    // let's count something simple
    var U = 10; // speed in meters per second
    var t = 10; // time in seconds
    var S = U * t; // distance in meters
    var S_px = S * k; // distance in pixels (scaled to the window width)
    

    【讨论】:

      猜你喜欢
      • 2021-02-08
      • 1970-01-01
      • 2023-02-04
      • 2023-01-31
      • 1970-01-01
      • 2014-11-23
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多