サイトのトップへ戻る

AndEngineドキュメント 日本語訳

カメラをスムーズに移動させる (A点から B点へ)

AndEngine にはカメラをA点からB点へ移動させる手段が既定では実装されていないので、とても簡単な別の方法でそれを行います。
Picture
カメラを中央に設定することはできますが、大事なことはA点からB点へスムーズに移動させることです。 単に別の座標へ一気にジャンプすることではありません。 あなたがとにかくジャンプ移動したいのであれば、気にせずジャンプ移動を使用してください:
camera.setCenter(pCenterX, pCenterY);


よりプロフェッショナルな見た目にしたいのであれば、ちょっとしたトリックが使えます。新しく Entityを作成して、それに Move Modifier を登録します。 Move Modifierでは、作成したEntityを追跡するように設定します。この方法で、点Aから点Bへの移動が素晴らしくスムーズになったと分かるでしょう。以下が例です:
Entity e = new Entity();
e.setPosition(pX, pY);
camera.setChaseEntity(e);
e.registerEntityModifier(new MoveModifier(duration, e.getX(), pToX, e.getY(), pToY));
Entity の(pX, pX)座標は点Aの開始点で、Move Modifier のパラメータ(pToX, pToY)は 終点Bの座標です。 AからBへカメラが移動した後、カメラの chase entityを無効にする必要があります。そのためには modifiers listenersを使用する必要があります - modifiers listenersについてはこの記事を確認してください。 そしてonModifierFinishedを上書きして、chase entityにnullを設定してください。以下が例です:
Entity e = new Entity();
e.setPosition(pX, pY);
camera.setChaseEntity(e);
       
final MoveModifier modifier = new MoveModifier(duration, e.getX(), pToX, e.getY(), pToY)
{
    @Override
    protected void onModifierFinished(IEntity pItem)
    {
        super.onModifierFinished(pItem);
        camera.setChaseEntity(null);
    }
};
               
e.registerEntityModifier(modifier);

この簡単なトリックによって、クールな移動エフェクトが使用できます。少なくとも私個人の意見としては、点Aから点Bへ単にジャンプするよりも良くなっています。



1. より簡単な方法:

代わりにSmoothCameraを使用することもできます。 setCenter(x, y)メソッドを使って、カメラをスムーズに移動させることができます。 この種類のカメラを新規に作成する際に、コンストラクタでいくつか追加のパラメータを設定する必要があります。 パラメータには、別の点へ移動する際のX軸上とY軸上の移動速度などがあります。 このカメラタイプを使ってカメラを直接ジャンプ移動させたい場合は、setCenterDirect(x, y)メソッドを使用します。