Box2D 像素(pixels)


Box2D使用MKS(米,千克,秒)的单位和弧度的角度。你或许有很多麻烦在使用米单位的时候,因为你的游戏用的是像素单位。为了解决这个问题我们在testbed平台上,我以米为单位计算,然后使用一个OpenGL视口变换到屏幕空间来缩放世界坐标。


float lowerX = -25.0f, upperX = 25.0f, lowerY = -5.0f, upperY = 25.0f;
gluOrtho2D(lowerX, upperX, lowerY, upperY);



如果你的游戏必须以像素为单位工作,那么你应该转换成像素的长度单位为米当传递参数给Box2D。同样,你应该把从Box2D得到的数据米单位转换成像素单位。这将提高改善物理模拟的稳定性。


你必须拿出一个合理的转换因子。我建议把这样的选择基于你的角色的大小。假设你已经决定使用50像素每米(因为你的精灵角色是75像素高)。然后,您可以从像素转换为米使用这些公式:


xMeters = 0.02f * xPixels;
yMeters = 0.02f * yPixels;


在反向:


xPixels = 50.0f * xMeters;
yPixels = 50.0f * yMeters;



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


如果你使用一个转换因子,你应该尝试调整它在全局范围,以确保没有任何错误。您也可以尝试调整,以提高稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值