2

少し漠然とした質問ですが、ご容赦ください。Python/Pyglet と openGL を使用してゲームを作成中です。私は現在、「ワールド」と呼ばれるオブジェクトが存在するように構造化しています。これには、他のオブジェクトが内部にある他のオブジェクトなどがあります。たとえば、ゲームの一部が他のオブジェクトを含むプラットフォームであるため、このようにしました。プラットフォームを傾けると、その上にあるオブジェクトも一緒に傾きます。したがって、glRotate、glTranslate を呼び出す platform.draw() を実行し、モデルビュー マトリックスを間に保存して各オブジェクトを描画します。このようにして、プラットフォーム上のすべてのオブジェクトが一緒に移動します。最初の質問は、これは物事を整理するための賢明な方法ですか、それとも他の方法を使用する必要があるかということです。

カメラクラスはありません。現在、世界全体またはその一部を翻訳して、動きの錯覚を与えています。ただし、将来的には、オブジェクト間で視点を切り替えることができるようにしたいと考えています。たとえば、上から世界を見下ろすことから、世界のオブジェクトの 1 つからの一人称視点に切り替えることができます。2 番目の質問は、これを将来達成できるようにプログラムを構成する最善の方法は何かということです。

4

2 に答える 2

1

おそらく完全な答えではありませんが、完全な答えには本全体がかかると思います...

階層内の世界の表現で行っていることは、通常「シーングラフ」として知られているものと非常に似ており、多くの場合、それは良い考えです。これを正確に行うライブラリの良い例はOpen Scene Graphです。

「世界の平行移動」については、毎回本当にすべての頂点を変換するのでない限り、それもまったく問題ありません。これは相対的な視点の問題であり、実際に持っているものはカメラ マトリックスと同じです。カメラをワールドに配置したり、カメラの前でワールドを動かしたりして、変換を確認できます。

于 2010-11-28T12:59:52.967 に答える
0

ロジックを別のモジュール/別のクラス/関数に入れることができます。私の 2D ゲームでは、GameLogic特定のイベントのメソッドの登録またはそれらのスケジュール (および登録解除 + スケジュール解除) を簡素化するクラスがあり@state_wrapper、そのメソッドの状態ストレージとして単純な新しいスタイルのオブジェクトを挿入するデコレータを作成しました。すべてのワールド オブジェクトにポインターを渡す必要がないようにすると、イベント メソッドのみがオブジェクトにアクセスする必要があります。

しかし、これが最善の解決策であるとは言いません ;)

于 2010-12-06T16:47:39.237 に答える