use*_*248 2 2d transformation pixels box2d sdl-2
问题很简单,没有代码!如果有人知道Box2D和SDL2,请告诉我如何用b2body包装SDL_Rect.当然,它需要知道米到像素的转换,反之亦然.这是因为Box2D以米为单位测量距离.你能给我一个简单的表达式或函数来将米(Box2D)转换为像素或像素(米)(Box2D)吗?
leg*_*s2k 10
你能给我一个简单的表达式或函数来将米(Box2D)转换为像素或像素(米)(Box2D)吗?
不幸的是,对于我们来说,这并不像听起来那么简单.因为,如果你的游戏是在蠕虫上,那么你的游戏世界将以毫米为单位,而如果它就像太空入侵者那么它将以千米为单位?所以由游戏设计师来决定这个缩放因子.在不知道游戏错综复杂的情况下,推断出这个因素只是一个疯狂的猜测.
来自Box2D的常见问题:
如何将像素转换为米?
假设你有一个100x100像素字符的精灵.您决定使用0.01的缩放因子.这将使角色物理盒1m x 1m.所以去做一个1x1的物理盒子.现在假设角色从像素坐标开始(345,679).所以将物理盒置于(3.45,6.79).现在模拟物理世界.假设角色物理盒移动到(2.31,4.98),因此将角色精灵移动到像素坐标(231,498).现在唯一棘手的部分是选择缩放因子.这真的取决于你的游戏.你应该尝试让你的移动物体在0.1到10米的范围内,1米是最佳点.
这里缩放因子是你设置的; 您决定构成游戏世界的一个单位的像素数.
通常建议您在游戏世界单元中进行所有计算,最后,作为最后一步(渲染),转换为像素; 同样在从外部引入数据(比如图像/精灵,以像素为单位)到世界空间之前,只进行一次反向转换,然后在其余代码中处理世界单位.有关此问题,请参阅Box2D的作者Erin Catto撰写的这篇文章.摘录:
您应该考虑在游戏代码中使用MKS单位,并在渲染时转换为像素.这将简化您的游戏逻辑并减少出错的机会,因为渲染转换可以隔离到少量代码.
该段也出现在手册中.