コンピュータ ゲームのアクセサリとしてマップを実装しています。いくつかの有益なオーバーレイを使用して、コンピューター ゲームの地理を表示する必要があります。JavaFX、より正確には ScalaFX でこれを達成するための最良の方法は何だろうか。
今、私は非常に素朴な実装をしています:
- さまざまなズーム レベルのマップのタイルがあります。ズーム レベルごと
ImageView
に を a に配置し、Group
そのグループを変換して、すべてのズーム レベルが同じ座標を使用するようにします。 - オーバーレイには、同じ座標を持つ別のグループが使用されます。
- マウス ホイールを使用してズームし、現在のズームに応じて 1 つのズーム レベルのみを表示します。
- これをすべて にパックします
ScrollPane
。
これにはいくつかの制限があります。
- すべてのズーム レベルのすべてのタイルが起動時に読み込まれます。それは醜いですが、私の特定のユースケースではうまくいきます。
- ScrollPane の使用は、マップの境界が制限されている場合にのみ機能します。繰り返しますが、ここでは問題ありませんが、一般的なマップではそうではありません。
- UX は奇妙です。ScrollPane はマウス ホイールでスクロールしますが、ほとんどのマップはドラッグ アンド ドロップでスクロールします。ほとんどのマップは、マウス ホイールまたはピンチでズームします。ジェスチャ中にズームが「アンカー」(マウス/タッチ位置) を保持することが重要です。(箱から出してすぐにモバイル対応になるのもいいですが、それは今のところ夢のようなものです...)
- 現在のズームに応じて、オーバーレイのさまざまなレベルの詳細が可能ですが、おそらくあまり効率的または便利ではありません。
明らかに、これは私が試したアプローチの 1 つです。この質問は、いくつかの eppleton によるライブラリに言及していますが、維持されていないようで、ライブラリを説明するために使用されたブログはもう存在しません。また、ゲームにとって意味のあるタイルを使用して、ゲームエンジンを提供することに重点を置いているようです。マップ内のタイルは単なる画像であり、オーバーレイは 1 つのタイルがどこで開始または終了するかを気にしません。
これを具体的な質問で締めくくります。私のニーズを満たすために使用できるライブラリやテクニックはありますか? 特に 3 番目の箇条書き (UX) に興味がありますが、適切なアプローチがあれば、ポイント 1 から 3 をカバーすると思います。