2

私は基本的な Box2D プログラム、より具体的にはthis oneを見ていました。

次の行を除いて、すべてが非常に単純で理にかなっています。

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 関数は、半分の幅と半分の高さ (エクステント) を取ります

幅 (「幅 100m」) ではなく、延長 (「各方向に 50 m」) を考慮してください。したがって、係数 2 です。

于 2012-12-24T18:26:32.093 に答える