2015-12-15 5 views
0

Je fais de mon mieux pour faire tomber un objet, et jusqu'à présent je ne peux même pas m'en approcher. Voici le code que j'essaie.Jmonkey: Réagir à la gravité avec 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); 

Aide sera appréciée.

+0

Il existe de nombreux exemples dans le wiki JME: http://wiki.jmonkeyengine.org/doku.php/jme3:beginner:hello_physics Quoi qu'il en soit, ne vous attachez '' bulletAppState' au AppStateManager'? – 1000ml

+0

Oui, j'ai ajouté dans la ligne, oublié à ce sujet. – user2999815

+0

Pouvez-vous voir votre objet sur l'écran? Votre code ne compile pas. Il n'inclut pas non plus toutes les choses nécessaires. S'il vous plaît lisez http://sscce.org et publiez un exemple complet qui reproduit votre problème. – 1000ml

Répondre

2

La physique dans votre exemple fonctionne pour moi. Mais en utilisant votre matériel, je ne peux rien voir parce qu'il n'y a pas de lumière.

Essayez de connecter un Light:

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

Essayer lignes au hasard ne vous mènera très loin. Je vous recommande de lire le wiki jME pour comprendre ce que ces lignes font réellement. Voici un exemple qui utilise un minimalisme Material qui n'a pas besoin de lumière:

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); 
} 

Cet exemple affiche un cube coloré tomber. Si cela ne fonctionne pas pour vous, il se peut qu'il y ait un problème avec votre version jME ou sa configuration (j'utilise jMonkeyEngine 3.1-alpha1).