等尺性のランジャンプスタイルのプラットフォーマーを作成したいと思います。プレイヤーは、床の上のプラットフォームの上にジャンプしたり、オブジェクトの側面にぶつかったりできる必要があります。
2Dゲームエンジンを使用するので、使用していないディメンションの完全な3Dコリジョンをエミュレートしたくありません。
ゲーム内のオブジェクトは、X、Y、幅、高さ、および深さのZを使用して配置する必要があると考えています。
これらの値を使用して、衝突をどのように検出する必要がありますか?
等尺性のランジャンプスタイルのプラットフォーマーを作成したいと思います。プレイヤーは、床の上のプラットフォームの上にジャンプしたり、オブジェクトの側面にぶつかったりできる必要があります。
2Dゲームエンジンを使用するので、使用していないディメンションの完全な3Dコリジョンをエミュレートしたくありません。
ゲーム内のオブジェクトは、X、Y、幅、高さ、および深さのZを使用して配置する必要があると考えています。
これらの値を使用して、衝突をどのように検出する必要がありますか?
回答:
2つのオプション:
固定の正投影カメラを使用して、3Dゲームとして扱うことができます。次に、標準の3Dゲームリソース/ブック/チュートリアル/ライブラリを使用できます。スプライトを使用して2Dでレンダリングした場合でも、動きなどの数学はシーンの背後で3Dのままです。これにより、最も正確な結果が得られます。
高さプロパティが追加されたトップダウンの2Dゲームとして扱うことができます。たとえば、各タイルに高さの値がある2Dグリッドを想像してください。あるタイルから別のタイルに移動する場合、キャラクターの足がそのタイルの高さ以上である場合にのみキャラクターを特定のタイルに通過させますが、ジャンプして重力がタイルの上に降ろす場合は、そのままにしておきます。もう少し作業すれば、橋の下などを歩くことができるようになります。
グーグルでこのデモを見つけました:http : //planetskill.com/iso/
移動するWASD。ジャンプするスペースバー
上/下軸との衝突のみを実装しますが、他の衝突の追加は簡単です:
次のステップの上下位置が最大値よりも高い場合は、動かさないでください。これにより、ジャンプを簡単に実装することもできます。
サンプルコード:http : //gist.github.com/478997
上記のすべて。アイソメトリックはせん断された2Dグリッドであるため、2Dタイルマップとして扱い、深度をエンコードする方法を考えてください。通常の2Dゲーム(「ジャンプ」時にブロックの後ろまたは前に移動できるようにするにはどうしますか?タイルごとに深さを保存するか(深さバッファー-> zバッファー)、または複数のレイヤーを使用します)または、より洗練されたものが必要な場合は、タイルタイプ(またはマップ位置)ごとにコールバックを実装し、好きなことを実行したり、深度を確認したり、機器を確認したり、プレーヤーをワープさせたり、プレーヤーをゆっくり上に移動させたり、HDをフォーマットしたりできます。
レベル上に表示されていない別のコリジョンレイヤーを作成し、それを使用してコリジョンをチェックすることもできます。プレーヤーがどのレイヤーにあるかがわかっている限り、これを複数のレイヤーに使用することもできます;)