私はAndroid Game Developmentの新機能で、libgdx ShapeRendererを使い始めて少しだけ検索したところ、右足で始めると混乱しました。LibgdxでShapeRenderer、Mesh + SpriteBatch、Box2D、Scene2Dを使用するタイミングは?
私が本当に知りたいのは、ShapeRenderer、Mesh + SpriteBatch、Box2D、Scene2Dをいつ使うべきかということです。
私はAndroid Game Developmentの新機能で、libgdx ShapeRendererを使い始めて少しだけ検索したところ、右足で始めると混乱しました。LibgdxでShapeRenderer、Mesh + SpriteBatch、Box2D、Scene2Dを使用するタイミングは?
私が本当に知りたいのは、ShapeRenderer、Mesh + SpriteBatch、Box2D、Scene2Dをいつ使うべきかということです。
LibGDXにはレンダリングのための(ほとんど直交している)APIがかなりあります。私はまだ多くの人の周りに自分の道を学んでいますが、私は別の部分の概要を与えることができます。
ShapeRenderer
を使用すると、基本的な薄い色のポリゴンと線を画面上に素早く簡単に配置できます。効率的ではありません(各レンダリングで多数の頂点データをアップロードします)。しかし、それは非常に速く行くことができます。その画面に強く向けられています(デフォルトでは、フルスクリーンの正投影プロジェクトになり、その単位は一般にピクセルです)。
Mesh
クラスはジオメトリをより直接的に制御しますが、色をフロートとしてエンコードし、頂点データ、カラーデータ、およびテクスチャデータをすべて同じフロート配列に格納するなど、 、およびインデックス配列の概念)。
SpriteBatch
は、「スプライト」(一般に、その中にテクスチャを有する長方形の領域)の周囲に配置されています。これは、メッシュのテクスチャリングの複雑さ(および柔軟性)の一部を隠します。
Box2Dは物理モデリングのためのもので、あなたが挙げた他のAPI部品(ほとんどはレンダリングに関するもの)のようなものではありません。
最後に、Scene2Dは、ほとんどボタン、リスト、スライダなどのアニメーション化されたユーザーインターフェイス要素を作成しています。しかし、その強力な(アニメーションやインタラクションイベントのための十分なきれいで柔軟なサポートを備えています)、あなたは非常に多くの "ゲーム"を実装することができます。
生の "OpenGL"コマンド(GL20
も参照)を使用することもできます。
あなたは完全に(1つの警告は、あなたが一般的に「フラッシュ」とShapeRenderer
/SpriteBatch
/Mesh
は異なる風味を開始する前にレンダリングするものは何でも「終了」しなければならないということである)これらの異なるプリミティブに一致するミックスと-ことができます。例えば、ゲームの中でメインメニューといくつかのメタアクションにScene2D、ゲームの中核をレンダリングするためにSpriteBatch
、そしてデバッグオーバーレイを生成するためにShapeRenderer
を使うことができます(バウンディングボックスの視覚化など)。
また、libGDXのほとんどは2D向けです。 Raw OpenGL
およびMesh
APIを使用して3Dオブジェクトを構築することもできます。
gdx-invaders exampleで、Mesh
、OpenGL、およびSpriteBatch
の使用方法を確認してください。 (私はこの例がScene2dの前にあると思うので、それはありません...)。また、これらのクラスの実装を見て、彼らがカバーの下で何をしているのかを見る価値があります。
うーん、ありがとう。今私は違いを見る=)。ちょうど1つの最後の質問:衝突検出のために何が良いですか? Box2D、Intersectorまたは私が知らない他の何か? –
'Intersector'には、あなた自身で衝突検出を行うために必要なすべてのツールがあります。 Box2Dは衝突検出を行いますが、これは完全な2D物理シミュレーションであり、より多くのことを行います。あなたが敵(またはフロアを持っているプレイヤー)と弾丸を交差させているだけであれば、あなたは自分自身を圧倒する方がよいでしょう。 –
@ P.T。N個の弾丸とM個の敵の間の衝突を連続的にチェックしなければならない場合は、自分のローリングはそれほど簡単ではないかもしれません。また、フロアや壁のプレイヤーの動きを適切にブロックすることも適切です。 –