Box2D 中一米有多少像素?

2023-12-03

问题很简单,没有代码!如果有人知道 Box2D 和 SDL2,那么,请告诉我如何用 b2body 包装 SDL_Rect。当然,它需要知道米到像素的转换,反之亦然。这是因为 Box2D 以米为单位测量距离。你能给我一个简单的表达式或函数来将米(Box2D)转换为像素或像素转换为米(Box2D)吗?


你能给我一个简单的表达式或函数来将米(Box2D)转换为像素或像素转换为米(Box2D)吗?

不幸的是,对我们来说,这并不像听起来那么简单。因为,如果你的游戏是在蠕虫上进行的,那么你的游戏世界将以毫米为单位,而如果它是这样的太空侵略者那么单位是公里?因此,由游戏设计师来决定这个比例因子。在不了解游戏复杂性的情况下,推断这个因素充其量只是一个疯狂的猜测。

From Box2D 的常见问题解答:

如何将像素转换为米?

假设您有一个 100x100 像素的角色精灵。您决定使用比例因子 0.01。这将使角色物理框变为 1m x 1m。所以去制作一个 1x1 的物理盒子。现在假设角色从像素坐标 (345,679) 开始。因此将物理框定位在 (3.45,6.79)。现在模拟物理世界。假设角色物理框移动到 (2.31,4.98),因此将角色精灵移动到像素坐标 (231,498)。现在唯一棘手的部分是选择缩放因子。这实际上取决于您的游戏。您应该尝试将移动物体控制在 0.1 - 10 米范围内,其中 1 米是最佳位置。

这里的比例因子是你设置的;您决定多少像素构成游戏世界的一个单位。

通常建议您以游戏世界单位进行所有计算,最后作为最后一步(渲染),将其转换为像素;同样,在将数据从外部(例如图像/精灵,以像素为单位)引入世界空间之前,仅进行一次反向转换,然后在其余代码中处理世界单位。看本文作者:Erin Catto,Box2D 的作者,关于这个问题。摘录:

您应该考虑在游戏代码中使用 MKS 单位,并在渲染时将其转换为像素。这将简化您的游戏逻辑并减少出错的机会,因为渲染转换可以隔离为少量代码。

这一段也出现在手册中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Box2D 中一米有多少像素? 的相关文章

  • 新手:XSLT 转换以验证 XML 文档中的规则

    我是 XSLT 的新手 我有一个 XML 文档 我需要使用 xslt 来验证 XML 文档中的某些规则 XML 和 xsl 文件将在 xsltproc 工具中使用 输出将是简单的 通过 或 失败 XML 示例
  • 使用 SDL2 C++ 时出现应用程序无法正确启动 (0xc000007b) 错误

    好吧 这就是问题所在 最近我对 C 游戏编程感兴趣 并且正在使用 SDL2 库 一切都运行良好 直到我想加载 SDL2 图像库 我遇到的第一个问题是 我的第一个设置是使用 x64 库 但运行代码时出现一些问题 因此我将其更改为 x86 我将
  • 如何找到二维数组JAVA中元素的平均值? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要以下程序的帮助 编写一个方法 将二维双精度数组作为输入参数并返回数组元素的平均值 谁能告诉我该怎么做 我当前的代码 public
  • 如何设置 BufferedImage 中的 RGB 像素以显示 16 位深度的 PNG?

    我正在尝试读取并显示 PNG 文件 我处理 8 位深度的图像没有问题 我按如下方式进行 BufferedImage result new BufferedImage width height BufferedImage TYPE INT R
  • Java - 二维数组检查对角线数字板

    目前我正在开发一个在 8x8 2D 阵列板中生成随机 0 和 1 的程序 我要做的是检查对角线上的所有数字是否相同 从角开始 而不仅仅是任何对角线 example int array 0 0 0 0 0 0 0 1 0 0 1 0 1 0
  • R:在数据框中插入多行(可变数量)

    我有一个数据框 例如 5 行 用于 2 个可观察值 我需要在数据框中插入 虚拟 或 零 行 以便每个可观察的行数相同 并且可以大于 N 行 以获得更长的行数 例如 This is what I have x c a a b b b y c
  • 如何检测位图中的红色像素

    android中的getPixels 是上下左右读取像素 还是左右上下读取像素 基本上是按行或列读取 如果我想知道图片中的红色值较高的位置 我可以这样做吗 我假设它是按列读取的 Bitmap thumbnail Bitmap data ge
  • R:使用字典/列表转换数据框列?

    我有一个包含大量文本值 级别 的数据框列 我需要将这些值映射到预定义的类似对象的结构 以减少级别数 我可以在 Python 中使用字典轻松实现此目的 但无法使用 R 中的列表实现同样的目的 例如 我的数据框列类似于 df lt data f
  • 找不到不使用 GL11Ext 进行绘图的 android 2d opengl sprite 类的合适示例

    正如 SpriteMethodTest 所说 绘制精灵的方法有很多种 首先 我尝试了canvas 并遇到了一些性能问题 接下来 我决定学习opengl 我使用 GL11Ext 扩展取得了第一个成就 但是 默认情况下您知道 当您绘制纹理时 它
  • 使用 BufferedImages 获取图像每个像素的颜色

    我试图获取图像的每个像素的每种颜色 我的想法如下 int pixels BufferedImage image image ImageIO read this getClass getResources image png int pixe
  • 如果我用opengl绘图的话SDL Renderer就没用了吗?

    我正在学习 SDL2 但我也在使用使用 OpenGL 调用的 imgui 库 从我在网上各种博客上读到的内容来看 我无法轻松混合 SDL2 渲染器和 opengl 调用 我要么使用其中之一 要么使用另一个 我读过的大多数教程都使用渲染器 所
  • 使用 scikit-image 和 Transform.PolynomialTransform 进行图像变形

    我附上一个压缩档案 https drive google com file d 0B6EnJ Vh6zs1MkVCRlNhZkJsOEk view usp sharing包含说明和重现问题所需的所有文件 我还没有上传图片的权限 我有一个带有
  • JavaFX 如何在不改变线宽的情况下缩放路径的坐标?

    我目前正在制作具有缩放和平移功能的阶梯折线图 由于我需要处理的数据量非常大 因此每次调用layoutPlotChildren 时 我无法重新创建步骤线的整个路径 所以我的想法是创建一次路径元素 然后在缩放和平移事件时对其进行转换 到目前为止
  • 如何在Sprite Kit中实现鼠标关节?

    我已经在 iOS 上用 Cocos2d Box2d 编写了拖放功能的工作实现 我需要将它移植到 Sprite Kit 逻辑非常基本 当用户触摸屏幕时 找到手指下的精灵 在找到的精灵和场景的物理体之间创建鼠标关节 将关节的目标设置为触摸位置
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 不同 Android 设备上 box2D 中出现奇怪的“口吃”

    我正在用 C 同时开发引擎和游戏 并使用 box2D 作为物理后端 我正在不同的 Android 设备上进行测试 在三分之二的设备上 游戏运行良好 物理效果也很好 然而 在我的 Galaxy Tab 10 1 上 我偶尔会遇到某种 口吃 的
  • javascript ImageData 类型数组读取整个像素?

    所以有很多关于如何的例子writeImageData 对象的 Uint32Array 视图中的整个像素 但是是否可以在不将计数器增加 4 倍的情况下读取整个像素呢 从hacks mozilla org https hacks mozilla
  • 在matplotlib中获取数据坐标中的bbox

    我有bbox of a matplotlib patches Rectangle显示坐标中的对象 条形图中的条形 如下所示 Bbox array 0 0 1 1 但我希望不是在显示坐标中而是在数据坐标中 我很确定这需要进行转变 这样做的方法
  • 如果图像包含特定颜色则

    是否有一种简单的方法来检查图像是否包含特定的 RGB 颜色 例如 Dim img As Image Image FromFile C image png If img contains color red toRGB then 我认为检查这
  • 按像素值偏移 gl_Position 或 gl_Vertex

    我的属性包含像素值 我想用这个属性值来偏移我的 gl vertex 问题是我的 gl vertex 以世界单位为单位 而 offset attribute 以像素为单位 如果我将屏幕尺寸作为统一发送 然后将像素转换为 1 到 1 值 并将其

随机推荐