サイトのトップへ戻る

AndEngineドキュメント 日本語訳

重力に逆らって動く方法:

dynamic bodyを使用しており、時々それを重力に逆らって動かさなければならないとしましょう。 重力に対して反対の力を常に加え続けることで、簡単にこれを行えます。 
Picture
左の画像を見て分かるように、重力は gravity にbodyの質量をかけた値に等しくなります。

結論? 単純に同じ力を符号を逆にして加えればいいのです (またはそれに-1をかける)


1. 反重力を適用する:
仮に、なんらかのエンティティ(今回はRectangleを使用)とその dynamic bodyを作成し、それに反重力を加えるとします。:
private Body body;

private void createAntiGravityBody()
{
    Rectangle yourEntity = new Rectangle(0, 0, 100, 100, vbo)
    {
        @Override
        protected void onManagedUpdate(float pSecondsElapsed)
        {
            super.onManagedUpdate(pSecondsElapsed);
            body.applyForce(-physicsWorld.getGravity().x * body.getMass(),
                            -physicsWorld.getGravity().y * body.getMass(),
                             body.getWorldCenter().x, 
                             body.getWorldCenter().y);
        }
    };
    yourEntity.setColor(Color.RED);
    body = PhysicsFactory.createBoxBody(physicsWorld, yourEntity, BodyType.DynamicBody, fixtureDef);
    scene.attachChild(yourEntity);
}

見て分かるように、 onManagedUpdate 内で、 applyForce メソッドを使って重力に対して反対の力を適用しています。