2

我在看一个基本的 Box2D 程序,更具体地说是这个

一切都相当简单且有意义,除了这一行:

Shape.SetAsBox((32.f/2)/SCALE, (32.f/2)/SCALE);   // SCALE = 30

现在我知道我们除以SCALE1m->30px 但为什么 32.f 除以 2?如果我的盒子纹理是 32x32 像素,我不明白为什么要除以 2。

4

3 回答 3

3

手册

groundBox.SetAsBox(50.0f, 10.0f);

SetAsBox 函数取半宽半高(范围)

于 2012-12-24T18:25:39.463 回答
1

这是因为盒子是围绕中心 (0,0) 创建的。

所以,

x = (32.f/2)/SCALE;
y = (32.f/2)/SCALE
SetAsBox(x,y);

将在 (-x, -y), (-x, y), (x, -y), (x, y) 处创建具有角的框,因此它将具有预期的大小。

于 2012-12-24T18:25:51.380 回答
1

如果您阅读手册第 2.2 节:http: //www.box2d.org/manual.html#_Toc258082968

SetAsBox 函数取半宽半高(范围)

考虑延伸(“每个方向 50 m”)而不是宽度(“100 m 宽”)。因此因子 2。

于 2012-12-24T18:26:32.093 回答