文档这里写到,转换比率是32
是不是可以理解在cocos creator中,32像素就是box2d中的一米
我在做一个沙盒游戏,如果我上面说的没错,如果我想要一个1厘米长宽的正方形,就需要在ccc中设置为0.32像素。是这样吗?
如果不修改ptm_ratio,怎样才能修改px到米的转化?
我在做一个沙盒游戏,如果我上面说的没错,如果我想要一个1厘米长宽的正方形,就需要在ccc中设置为0.32像素。是这样吗?
如果不修改ptm_ratio,怎样才能修改px到米的转化?
我前一阵子大概搞明白box2d的单位和ccc怎么实现的绑定了,分享一下吧
Box2D is tuned for meters-kilograms-seconds (MKS). Your moving objects should be between 0.1 - 10 meters. Do not use pixels as units! You will get a jittery simulation.
box2d的FAQ中提到了物体大小应该在0.1-10之间,如果超过0.1-10会有问题
具体就是小于0.1精度就有损失,物体之间会出现缝隙。
大于10,物体移动变得特别慢,模拟不真实。
引擎应该有一个把像素转换到box2d单位的过程。这里转换用的就是PTM_RATIO 1/32
那么在cocoscreator里32个像素应该是box2d中的1米
我猜,ccc这里用了1/32是因为2dx用的就是1/32
而2dx用固定的1/32大概只是因为那个时候游戏的分辨率不会让游戏超过0.1-10这个区间,比如iPhone3GS是320*480
到了iPhone4的时代,这个PTM_RATIO就应该换成1/64
不过如果真的追求模拟的真实,应该限定游戏里最小的物体就是0.1,最大的就是10
比如在游戏里,如果设定最小的物体是0.1米,节点尺寸是20*20,那PTM_RATIO应该是1/200。
使用1/32是错误也没有意义的,box2d不依赖32这个数字,至少通过实践,修改引擎中的PTM_RATIO,一切都能正常工作
而且现在分辨率都变大了,比如我的游戏里一个苹果是40*40像素,那么他在box2d用1/32转换后是一个1.25米的苹果。
这个数值应该随项目的设置变化,而不是写死在引擎里面。