Jmonkey: заставить RigidBodyControl реагировать на гравитацию

Я изо всех сил стараюсь, чтобы объект упал, и пока не могу даже приблизиться. Вот код, который я пытаюсь.

    BulletAppState bulletAppState = new BulletAppState();

    cubemesh = new Box(1f,1f,1f);
    Geometry something = new Geometry("cube", cubemesh);
    Material bronze = new Material(assetManager, 
    "Common/MatDefs/Light/Lighting.j3md");
    something.setLocalTranslation(0,1,0);
    bronze.setTexture("DiffuseMap", assetManager.loadTexture("Textures/bronze.jpg"));
    something.setMaterial(bronze);
    rootNode.attachChild(something);

    RigidBodyControl control = new RigidBodyControl(10f);
    Vector3f direction = new Vector3f(0,-9.81f,0);
    something.addControl(control);

    //all the random lines i've tried
    stateManager.attach(bulletAppState);
    control.setGravity(direction);
    bulletAppState.getPhysicsSpace().setGravity(direction);
    rootNode.attachChild(something);
    bulletAppState.getPhysicsSpace().add(control);

Помощь будет оценена.


person user2999815    schedule 15.12.2015    source источник
comment
В вики jME есть много примеров: wiki.jmonkeyengine.org/doku.php /jme3:beginner:hello_physics В любом случае, вы присоединили bulletAppState к AppStateManager?   -  person 1000ml    schedule 16.12.2015
comment
Да, я добавил в строку, забыл об этом.   -  person user2999815    schedule 16.12.2015
comment
Вы видите свой объект на экране? Ваш код не компилируется. Он также не включает в себя все необходимое. Прочтите sscce.org и опубликуйте полный пример, который воспроизводит вашу проблему.   -  person 1000ml    schedule 16.12.2015
comment
готово, просто используйте случайный jpg. (не в настроении менять имена переменных)   -  person user2999815    schedule 17.12.2015


Ответы (1)


Физика в вашем примере работает для меня. Но используя ваш материал, я ничего не вижу, потому что нет света.

Попробуйте прикрепить Light:

AmbientLight light = new AmbientLight();
light.setColor(ColorRGBA.White);
rootNode.addLight(light);

На случайных линиях далеко не уедешь. Я рекомендую прочитать вики jME, чтобы вы поняли, что на самом деле делают эти строки. Вот минималистичный пример, в котором используется Material, которому не нужен свет:

public void simpleInitApp() {
    BulletAppState bulletAppState = new BulletAppState();
    stateManager.attach(bulletAppState);

    Geometry something = new Geometry("cube", new Box(1,1,1));
    something.setMaterial( new Material(assetManager, "Common/MatDefs/Misc/ShowNormals.j3md") );
    something.setLocalTranslation(0,2,0);
    something.addControl( new RigidBodyControl(10f) );

    rootNode.attachChild(something);
    bulletAppState.getPhysicsSpace().add(something);
}

В этом примере показан красочный падающий куб. Если это не работает для вас, возможно, что-то не так с вашей версией jME или ее настройкой (я использую jMonkeyEngine 3.1-alpha1).

person 1000ml    schedule 17.12.2015