Box2D C ++ - 为什么除以2?

时间:2012-12-24 18:18:58

标签: c++ c box2d

我正在研究一个基本的Box2D程序,更具体地说是this one

除了这一行之外,一切都很简单有意义:

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

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

3 个答案:

答案 0 :(得分:3)

来自manual

  

groundBox.SetAsBox(50.0f,10.0f);

     

SetAsBox函数采用半宽和半高(范围)

答案 1 :(得分:1)

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

所以,

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

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

答案 2 :(得分:1)

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

  

SetAsBox函数采用半宽和半高(范围)

考虑延伸("每个方向50米")而不是宽度(" 100米宽")。因此,因素2。