1

Android用に書いたゲームを再構築しています。基本を学ぶためのシンプルなキャンバスで書かれています。より高いレベルに到達するために、 の助けを借りてそれを書きますlibgdx。そうするために、 (モンスター、アクティブな場合はスキル、キャラクター、場合によってはパーティクル) をstageどこに追加するかを考えました。Actorsこれは 2D ゲームを組み立てる良い方法だと読みました。

それに関するいくつかの詳細情報。スクエアシステムの2D RPGです。すべてのステップは、次の正方形への 1 つの移動です。

古いバージョンでは、すべてのモンスターにスレッドを使用して、モンスターが「望む」ように処理および反応できるようにしました。これはlibgdxでも可能ですか、それとも別の方法で処理する必要がありますか?

キャラクターをある正方形から次の正方形に移動したい場合、ピクセル位置を変更してスプライトをある正方形から次の正方形に移動する計算時間がありました。libgdx では、正方形を初期化したカメラを用意します。たとえば (40f,30f) です。thread古いゲームで行ったように、キャラクターを内で動かすことはできますか? したがって、ある正方形から次の正方形までに 500 ミリ秒かかることはわかっていたので、50 ミリ秒ごとに ppuX を +0.1f にする必要があります。それに応じてスプライトも更新しました。したがって、スプライトがより速く動くと、スプライトはより速く変化します。

スキルもそのようにプログラムしました。たとえば、火の玉は、何かに当たるまで糸によって動かされる絵です。

「試作品」の写真をご覧ください。キャンバスを使用した試作品の写真

4

2 に答える 2

3

おそらく可能ですが、エンティティごとにスレッドを割り当てることは非常に悪い考えです。実際、非常に悪いため、対応する TheDailyWTF エントリがあります。

http://thedailywtf.com/Articles/Sprite_Threading.aspx

このアプローチでは、リソースを不必要に消費するだけでなく、長期的には正気を危険にさらすことにもなります。リンクされたエントリは、コメントとともに、その理由を徹底的に説明していると思います.

ApplicationListener一般に、libgdx はクラス (具体的にはrender()メソッド)を介して「メインループ」モデルをサポートします。Android 向けのものを含め、開始するためのチュートリアルが多数あります。

このアプローチは最初はより制限的に見えるかもしれませんが、はるかに信頼性の高いコードが可能になります。

于 2013-03-14T11:03:02.707 に答える
1

LibGdxでは、Gameクラスのrender()メソッドが継続的に呼び出されます。この方法では、4つのことができます。

1)プロセス入力
2)スプライト/アクターを更新します
3)衝突をチェックし
ます4)世界をレンダリングします

ゲームオブジェクトを移動するために別のスレッドを作成する必要はありません。

于 2013-03-14T10:57:38.340 に答える