2016-11-15 12 views
0

私は、javafxを使ってシングルスクリーン、shoot'em up/platformerソートの小さなゲームを作っています。異なる解像度のスクリーンでも動作させたいと思っています。すべての私のグラフィックスは、画面上の位置がピクセルに対応する座標によって決定される単一のペインでJava形状で作られています。一貫性のあるプラットフォームであればゲームプレイが必要ですが、たとえば、より小さい解像度では、単位時間あたり10ピクセルの速度が速いため、問題が発生しています。異なる解像度でゲームをするのですか?

私が知っていると思う唯一の解決策は、すべてに何らかの定数と解像度の比を乗算することですが、それはちょっとうんざりしているので、もっと良い方法があるかと思います。たとえば、ゲームを一定の解像度で「内部的に」走らせて、数学的に一貫性を持たせてから、プレイヤーが使っている画面に合わせてスケールすることができますか?

+0

[JavaFXフルスクリーン](http://stackoverflow.com/questions/16606162/javafx-fullscreen)と[javafx自動サイズ変更とボタン埋め込み](http://stackoverflow.com)に関連するいくつかの質問があります。/questions/23229149/javafx-automatic-resizing-and-button-padding)を参照してください。多くのアプローチが解決策を提供する可能性があるので、一般的に答えが広すぎるのは難しい(例えば、シーンを一様に拡大して使用可能な領域を埋めることができる、または、解像度とアスペクト比の両方に基づいてレイアウトを動的に変更する、 。 – jewelsea

答えて

0

一定の解像度でレンダリングするソリューションは、エミュレータなどで異なるアスペクト比で処理する方法が一般的です。バックグラウンド画像を追加したり、サイドバーを追加したりすることで、再生可能なスペースが一定のままになることがあります。

一般的に、現代のハードウェアで実現するのが最も良い方法は、おそらくゲームレイヤーから完全に「ピクセル」を取り除くことです。あなたのゲームは「10」、10何か移動する必要がありますか? 10単位。レンダリングエンジンの後ろにレンダリングエンジンが来ると、レンダラーは10単位= 10ピクセルまたは20ピクセルまたは何らかのスケールファクタを認識します。そうすれば、あなたのゲームの部分はゲームのプレイだけを心配し、レンダリング層はそれをイメージに書き込む方法を心配します。それでは、異なるアスペクト比を扱うことについて心配する必要がありますが、実際には何を考慮しなくてはなりません。

通常、ゲームではピクセルを直接使用するのはUI要素だけです。

+0

ありがとうございました。現在あなたの提案を実装しています。 – Tom

+0

うまく動作します。再度、感謝します。 – Tom

関連する問題