Почему эта простая вещь Box2D не работает? - PullRequest
0 голосов
/ 27 июля 2011

Когда я запускаю это, ничего не происходит.Блок остается на (10,0, -10,0) и не падает.Por que?

Вот мой код:

import processing.core.PApplet;
import org.jbox2d.collision.shapes.PolygonShape;
import org.jbox2d.common.Vec2;
import org.jbox2d.dynamics.Body;
import org.jbox2d.dynamics.BodyDef;
import org.jbox2d.dynamics.FixtureDef;
import org.jbox2d.dynamics.World;  

public class PhysicsWorld extends PApplet {

    private World world;
    private Body block;
    private static final float RATIO = 30f;

    public void createWorld() {
        Vec2 gravity = new Vec2(0.f,-9.8f);
        world = new World(gravity, true);
        world.setGravity(gravity);

    }

    private void createBlock(){
        BodyDef blockDef;
        PolygonShape blockShape;

        blockDef = new BodyDef();
        blockDef.position.set(300.f / RATIO, -300.f / RATIO);

        blockShape = new PolygonShape();
        blockShape.setAsBox(20/RATIO, 25/RATIO);

        FixtureDef fixtureDef = new FixtureDef();
        fixtureDef.shape = blockShape;
        fixtureDef.density = 1.0f;
        fixtureDef.friction = 0.8f;
        fixtureDef.restitution = 0.3f;

        block = world.createBody(blockDef);
        block.createFixture(fixtureDef);
    }

    public void setup(){
        createWorld();
        createBlock();
    }

    public void draw(){
        world.step(1/60, 8, 3);
        //world.clearForces();
        System.out.println(block.getPosition() +" " + world.getGravity());

    }

}

1 Ответ

0 голосов
/ 27 июля 2011

По умолчанию тела являются статическими, поэтому вам просто нужно установить тип тела b2_dynamicBody.

...