我在看一个基本的 Box2D 程序,更具体地说是这个。
一切都相当简单且有意义,除了这一行:
Shape.SetAsBox((32.f/2)/SCALE, (32.f/2)/SCALE); // SCALE = 30
现在我知道我们除以SCALE
1m->30px 但为什么 32.f 除以 2?如果我的盒子纹理是 32x32 像素,我不明白为什么要除以 2。
从手册:
groundBox.SetAsBox(50.0f, 10.0f);
SetAsBox 函数取半宽半高(范围)
这是因为盒子是围绕中心 (0,0) 创建的。
所以,
x = (32.f/2)/SCALE;
y = (32.f/2)/SCALE
SetAsBox(x,y);
将在 (-x, -y), (-x, y), (x, -y), (x, y) 处创建具有角的框,因此它将具有预期的大小。
如果您阅读手册第 2.2 节:http: //www.box2d.org/manual.html#_Toc258082968
SetAsBox 函数取半宽半高(范围)
考虑延伸(“每个方向 50 m”)而不是宽度(“100 m 宽”)。因此因子 2。