我正在研究一个基本的Box2D程序,更具体地说是this one。
除了这一行之外,一切都很简单有意义:
Shape.SetAsBox((32.f/2)/SCALE, (32.f/2)/SCALE); // SCALE = 30
现在我知道我们将SCALE
除以1m-> 30px,但为什么32.f除以2?我不明白为什么我们除以2,如果我的盒子纹理是32x32像素。
答案 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。