问题很简单,没有代码!如果有人知道 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(使用前将#替换为@)