サイトのトップへ戻る

AndEngineドキュメント 日本語訳

飛行する敵を作成する:

この記事では、 '飛行する敵'(何らかの鳥にしましょう)を作成する方法を説明します。 ほとんどの場合、同様に物理演算も必要です。 そのため、まず最初にどのタイプのbodyを使用するのかを決めなけばなりません (body タイプの説明については - ここをクリック)

今回の例では、'飛行する'敵を作成するので、モンスターのbodyに重力は必要ありません。これは KINEMATIC bodyタイプが最も適しているということです。 モンスターは、x軸に沿って絶えず移動を続けます (右 - 左と方向を変えます)

Picture
  • 新たに Entity を作成する- 例えば AnimatedSprite。
  • 前に作成したentityのKinematic Body を新たに作成します。
  • 新しいPhysicsConnectorを登録する
  • onUpdate()を上書きする
final float maxMovementX = 200;
final Sprite m = new Sprite(x, y, width, height, textureRegion);       
m.setCullingEnabled(true);
final Body b = PhysicsFactory.createBoxBody(physicsWorld, m, BodyType.KinematicBody, wallFixtureDef);
b.setLinearVelocity(-1 * 5, 0);
       
physicsWorld.registerPhysicsConnector(new PhysicsConnector(m, b, true, false)
{
    @Override
    public void onUpdate(float pSecondsElapsed)
    {
        super.onUpdate(pSecondsElapsed);
               
        if (m.getX() <= x - maxMovementX)
        {
            b.setLinearVelocity(b.getLinearVelocity().x * -1, 0);
        }
        if (m.getX() >= x + maxMovementX)
        {
            b.setLinearVelocity(b.getLinearVelocity().x * -1, 0);
        }
    }
});

この簡単な方法で、モンスターは絶えず移動し、特定のポイント (この例では、モンスターのスタート地点 Xの+- maxMovementX の地点, in the left direction)に着くと方向を変えます。 linear velocityに-1をかけることでモンスターの動く方法を変えます。 これは本当に基本的な実装だけなので、たいていは CONTACT LISTENER 内でbody同士の接触を確認するためにユーザーデータを設定する必要があります。- 例えば、プレイヤーの死亡やモンスターの破壊を制御するために。