私は独学で C++ を学習し、2D タイル マッピングで遊んでいます。
私は、このタイリング チュートリアルに基づいたこのscrolling
投稿をここで読んでいます。
上記のチュートリアルと本の助けを借りて、タイル張りの世界と(タイルも)Pearson, Computer Graphics with OpenGL
描画する小さなプログラムを作成しました。40x40
Sprite
描画/レンダリングの順序に関しては、マップ (または世界) 自体がその後ろのレイヤーであり、スプライトは最前 (または一番上の) レイヤーです。タイルとカスタム スプライトまたは四角形よりも 2 つのタイルの方が相互作用しやすいので、これは良い方法だと思います。あれは正しいですか?
を使用しての内部Keyhandling()
を移動できる機能を実装しました。キーを押すと増減するという変数があります。変数を に割り当てるか、 に割り当てるかによって、画面上の任意の方向にどちらか一方を割り当てることができます。map
viewport
keyboards arrow keys
offsetx, offsety
map
sprite
どちらもうまく機能していないように見えるので、変数を両方 (マップとスプライト) に割り当てましたが、スプライトには正の値、マップには負の値を割り当てました。したがって、キーを押すと、スプライトが一方向に移動し、マップが反対方向に移動することができます。
私の問題は、スプライトがすぐにウィンドウを離れるのに十分なほど移動し、マップの多くをシーンに持ち込むのに十分でないことです。(ウィンドウには、一度におよそ1/8th
のタイルしか表示されません)。
私は一日中考えていましたが、この問題を解決する効率的/効果的な方法sprite
は、画面の中央に固定し、キーを押すとmap
動き回ることだと思います...実装方法がわかりませんこれだけど。
それは良い方法でしょうか?または、ビューポートまたはカメラも移動することが期待されますか?