で画面全体をスケーリング、私は触手とサム&最大ヒットの日のように、あなたは、彼らは90年代初頭から落ちたように見えるゲームを作ることができますアドベンチャーゲームエンジンを作るしようとしています道路。したがって、私は実際にゲームを320x240で実行したい(私は知っている、おそらく320x200だが、shh)が、ユーザーの設定に応じてスケールアップする必要があります。XNAを使用してXNA
今は大丈夫ですが、私は実際に見たいいくつかの問題に取り組んでいます詳細 pixellated現在それはありません。ここで
は、私が今やっているものです:
ゲームの初期設定では:
public Game() {
graphics = new GraphicsDeviceManager(this);
graphics.PreferredBackBufferWidth = 640;
graphics.PreferredBackBufferHeight = 480;
graphics.PreferMultiSampling = false;
Scale = graphics.PreferredBackBufferWidth/320;
}
スケールは私が相対私のゲームを拡張する必要があり、どのくらい見ていつでも確認することができますパブリック静的変数であります〜320x240私の描画機能で
:
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullNone, null, Matrix.CreateScale(Game.Scale));
この方法で、すべてが320×240で描かれ、現在の解像度(デフォルトでは640×480)を合わせて吹き飛ばされます。もちろん、私はマウスの実際の座標を320x240座標に変換するなどの計算を行います。
これは素晴らしく、すべてですが、今ではスプライトのスケーリングを開始したいと思っているところまで歩いていきます。
以下の画像をご覧ください。左上の画像は、ゲームが640x480で動作しているときのスクリーンショットです。その右の画像は、320x240でどのように見えるかです。一番下の行は300%まで吹き飛ばされています(Photoshopではエンジンではありません)ので、私の話を見ることができます。 640×480の画像で
、あなたは別の「線の太さを、」見ることができます太い線は実際にどのように見えるか(1ピクセル= 2x2、これは640x480で実行されるため)、細い線(1x1ピクセル)はスケーリングのために表示されません)。
基本的に私は320x240ディスプレイをエミュレートしようとしていますが、XNAを使用して解像度を吹き飛ばしています。マトリックス変換はそのトリックを行っていません。これをやり遂げることができる方法はありますか?
おかげでたくさんの! SpriteBatch.Begin(SpriteSortMode.Deferred、BlendState.NonPremultiplied、SamplerState.PointClamp、DepthStencilState.Default、RasterizerState.CullNone)という最後のSpriteBatch呼び出しを作成しました。投影がぼやけて見えないようにするために、それは素晴らしいです!再度、感謝します! –