2

ボディの寸法とピクセル数(box2d)の関係について誰か教えてください。1 メートルの長さに寄与するピクセル数は? 具体的には、プログラムで以下のコード行を使用しています

polygon_body.SetAsBox(1, 1);

このコードでは、SetASBox のパラメーターは何ですか。それがピクセル値か他の単位かということです。

4

1 に答える 1

0

1 メートルは約 32 ピクセルです。

マニュアルを見なくてSetAsBox()も、box2d関数であるため、パラメーターはメートル単位で取得されると思います。したがって、ピクセル値がある場合は、この定義を使用してメートルに簡単に変換できます。

#define PTM_RATIO 32

これをファイルに含めると、比率を忘れて、ピクセルとメートルの間で変換する必要があるときはいつでもこの定義を使用できます。実際に変換を行うときは、コンテキストに応じて、この比率 (32/1) で割ったり掛けたりすることができます。例えば:

CGSize winSize = [[CCDirector sharedDirector] winSize];
b2Body *body = world->GetBodyList();

if(body->GetPosition().x*PTM_RATIO > winSize.width/2){
    // do stuff....
}

メートル (GetPosition) をピクセル (winSize) と比較した場合、この条件は機能しないため、これはこの変換が役立つ場所の良い例です。

または、あなたの場合:

float pixel_width, pixel_height;
polygon_body.SetAsBox(pixel_width/PTM_RATIO, pixel_height/PTM_RATIO);
于 2012-07-16T13:20:06.940 に答える