0

Farseer ライブラリは初めてで、Farseer を使用して C# フォーム アプリケーションを作成しようとしています。フォームを作成し、フォームに床を配置し、フォームの上部から下部に単一の長方形をドロップしています。ブロックは落下するように見えますが、重力によって加速しません。それは私が設定していないものだと確信していますが、私の人生ではそれを理解することができず、誰かが私を正しい方向に向けてくれることを望んでいました.

助けてくれてありがとう、

ジェフ

==============================重要なコード================= ===============

 World world = new World(new Vector2(0.0f, 0.1f));

//Floor
Body floor = BodyFactory.CreateRectangle(world, 10000.0f, 30.0f, 100, new Vector2(0.0f, Height));
floor.BodyType = BodyType.Static;

// Block
 Body Block1 = BodyFactory.CreateRectangle(world, 100.0f, 10.0f, 100, new Vector2(Width/2, 0));
 Block1.BodyType = BodyType.Dynamic;

//(The step here is called when I timer goes off every .01/second)
 //Step the world a 10th of a second.
 world.Step((float).01f);



//(I draw the object this way)

 gr.TranslateTransform(body.Position.X, body.Position.Y);
 gr.RotateTransform((float)((body.Rotation *360)/(2*Math.PI)));
 gr.FillRectangle(SystemBrushes.ButtonFace, -size.Width / 2.0f, -size.Height / 2.0f, size.Width, size.Height);  
 gr.ResetTransform();
4

1 に答える 1

0

これを考え出した!問題は、メーターの代わりにピクセルを使用していたことでした.落下するブロックに重力が影響することがわかるようになると. お騒がせしてすみません。

よくある質問:

Box2D はどの単位を使用しますか?¶

Box2D は、メートル-キログラム-秒 (MKS) に合わせて調整されています。動くオブジェクトは 0.1 ~ 10 メートルの間である必要があります。ピクセルを単位として使用しないでください。ぎくしゃくしたシミュレーションが得られます。

ピクセルをメートルに変換するにはどうすればよいですか?

100x100 ピクセルのキャラクターのスプライトがあるとします。0.01 の倍率を使用することにしました。これにより、キャラクターの物理ボックスが 1m x 1m になります。では、1x1 の物理ボックスを作成してみましょう。ここで、文字がピクセル座標 (345,679) から始まるとします。物理ボックスを (3.45,6.79) に配置します。次に、物理世界をシミュレートします。キャラクターの物理ボックスが (2.31,4.98) に移動すると仮定すると、キャラクターのスプライトをピクセル座標 (231,498) に移動します。ここで唯一難しいのは、倍率の選択です。これは本当にあなたのゲームに依存します。移動するオブジェクトを 0.1 ~ 10 メートルの範囲に収めるようにしてください。1 メートルがスイート スポットです。

于 2011-04-04T19:07:40.567 に答える