0

自分だけのユニット「システム」を使いたい。1 ピクセルなどは 0.01 単位に相当します。

自分の Unitsystem で何かを描画したいときは、常に値を 100 で乗算/除算する必要があります。

誰か助けてくれませんか^^?

4

2 に答える 2

1

Spritebatch.Begin() の最後のパラメーターは、変換マトリックスにすることができます。

TransformMatrix = Matrix.CreateScale(0.01);
spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, TransformMatrix);
于 2015-08-12T09:07:31.070 に答える
0

Farseer Physics は、ConvertUnitsこの種のクラスを提供します。メモリから、興味のあるメソッドはToSimUnitsToDisplayUnitsです。Farseerのドキュメントでは、次のように説明されています。

// 1 meter = 64 pixels
ConvertUnits.SetDisplayUnitToSimUnitRatio(64f);

// If you object is 512 pixels wide and 128 pixels high:
float width = ConvertUnits.ToSimUnits(512f) // 8 meters
float height = ConvertUnits.ToSimUnits(128f) // 2 meters

したがって、ルールは次のとおりです。

  1. エンジンにピクセルを入力する必要があるときはいつでも、最初に数値をメートルに変換する必要があります。
  2. エンジンから値を取得して画面に描画するときはいつでも、最初にそれをピクセルに変換する必要があります。

これらの単純なルールに従えば、安定した物理シミュレーションが得られます。

関連するトピックについては、解像度の独立性を検討する必要があります。

于 2015-08-15T00:39:24.580 に答える