ステージの読み込み、ステージファイルの解析、ゲームシーンの作成を司るコードを既に作成しているので、この実装は本当に簡単です。 覚えているかもしれませんが、各種類の足場のbodyごとに異なるユーザーデータを設定しました("platform1", "platform2" and "platform3")。 これらのユーザーデータを使って、特定の bodies/fixtures同士が接触する度に、何のイベントを実行するのかを識別します。 GameScene内のコンタクトリスナーで確認を行います。
if (x1.getBody().getUserData().equals("platform3") && x2.getBody().getUserData().equals("player"))
{
x1.getBody().setType(BodyType.DynamicBody);
}
これはどういった処理をしているのでしょうか?単に、足場3のbodyタイプをDynamicに変更しているだけです。これで重力の影響を受けるようになり、足場は落下します。
if (x1.getBody().getUserData().equals("platform2") && x2.getBody().getUserData().equals("player"))
{
engine.registerUpdateHandler(new TimerHandler(0.2f, new ITimerCallback()
{
public void onTimePassed(final TimerHandler pTimerHandler)
{
pTimerHandler.reset();
engine.unregisterUpdateHandler(pTimerHandler);
x1.getBody().setType(BodyType.DynamicBody);
}
}));
}
これはどういった処理をしているのでしょうか?プレイヤーと足場2が接触した後、新たにタイムハンドラを登録します。そして0.2秒後、足場のbodyをDynamicに設定します。 これで簡単な遅延が実現できました。
この記事では、本当に初歩的なやり方を説明しているのを忘れないでください。 おそらくゲームの種類によっては、足場のspriteやbodyが必要なくなった後に、それを破棄するよう気をつけなければなりません。 (例。足場が落下した後、Y軸上の位置が0以下になった場合)
| 前の記事 | 次の記事 |