0

私は現在、artemis と libgdx を使用してエンティティ システム ベースのゲームに取り組んでおり、そのような構成でレベルの変更をどのように処理すればよいか疑問に思っています。

たとえば、マリオのようなプラットフォーマーの場合:

最初にマリオがレベルを開始すると、エンジンが新しい World() をインスタンス化し、タイルマップをロードしてすべてのオブジェクトを初期化します。

マリオがパイプを通ったら?パイプ内の世界は new World()? それとも、カメラは世界の別の部分だけに焦点を合わせていますか?

新しいワールドがある場合、アルテミスはエンティティをワールドから切り離すことを許可していないので、プレイヤー エンティティのクローンを作成して新しいワールドに追加できますか?

この種のレベルのパーツ変更 (マリオのパーツ/エイブのオデッセイ画面) を処理する方法を知っている人はいますか? アルテミスのようなフレームワークを使用してこれを達成する一般的な方法は何ですか?

4

3 に答える 3

0

LevelTagComponent をいくつか作成し、それをレベル固有のすべてのエンティティに追加します。Custom Manager が残りを行う必要があります - マリオがトンネルに入ったときにいくつかのエンティティをオフにするか、レベルが完全に変更されたときにエンティティを削除します。

于 2014-08-24T08:08:34.200 に答える
0

最終的に、長方形を定義するルーム オブジェクト レイヤーを追加することにしました (下の図を参照)。

タイル マップの上の部屋レイヤー

各部屋は、x、y 座標と幅、高さの寸法を持つ長方形です。各部屋は、カメラが移動できる境界を定義しました。プレーヤーが別の部屋と交差する場合、カメラは、部屋が画面よりも大きい場合、x 軸または y 軸に沿って部屋 n から部屋 n+1 にスライドします。カメラはスクロールできます。

このアプローチを使用してパフォーマンスを向上させ、多くの問題を解決することができました。各フレームで全世界を計算する代わりに、現在の部屋に含まれるエンティティのみを処理することが可能です。

于 2014-08-24T10:26:07.540 に答える