I’m doing a game. Now I have a scene with a bar. This is the image:
The problem is that If I move the bar to left or right, it doesn’t collision with the wall, the bar continuous and no stop:
This is the code:
[java]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package balltingo;
import com.jme3.app.SimpleApplication;
import com.jme3.bullet.BulletAppState;
import com.jme3.bullet.collision.shapes.CapsuleCollisionShape;
import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.control.BetterCharacterControl;
import com.jme3.bullet.control.RigidBodyControl;
import com.jme3.bullet.util.CollisionShapeFactory;
import com.jme3.input.controls.ActionListener;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.scene.Spatial;
import com.jme3.input.KeyInput;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.scene.Node;
import com.sun.java.swing.plaf.windows.WindowsTreeUI;
/**
*
-
@author dominuskernel
*/
public class StageOne extends SimpleApplication{
private Spatial scene;
private Spatial barra;
private BulletAppState bulletAppState;
private RigidBodyControl landscape;
private RigidBodyControl barra_phy;
private boolean left = false, right = false;public static void main(String[] args){
StageOne app = new StageOne();
app.start();
}@Override
public void simpleInitApp(){
//the camera doesn’t move
flyCam.setEnabled(false);
//flyCam.setMoveSpeed(50);//call the class for collisions bulletAppState = new BulletAppState(); stateManager.attach(bulletAppState); //set camera location cam.setLocation(new Vector3f(-22f, 31f, 0f)); //the camera look at direction cam.lookAt(new Vector3f(0f, 3f, 0f), Vector3f.UNIT_Y); //Declare scene and model and set location for barra scene = assetManager.loadModel("Scenes/stage1/balltingo.j3o"); barra = assetManager.loadModel("Models/barra/barra.j3o"); barra.setLocalTranslation(-22f, 6.5f, 0f); barra.setLocalScale(2f); //set the collision scene and barra model CollisionShape sceneShape = CollisionShapeFactory.createMeshShape((Node)scene); landscape = new RigidBodyControl(sceneShape,0); scene.addControl(landscape); barra_phy = new RigidBodyControl(0.0f); barra.addControl(barra_phy); bulletAppState.getPhysicsSpace().add(barra); //attach scene rootNode.attachChild(scene); rootNode.attachChild(barra); //call to setUpKeys method setUpKeys();
}
//set the controls key for barra
public void setUpKeys(){
inputManager.addMapping(“Left”, new KeyTrigger(KeyInput.KEY_A));
inputManager.addMapping(“Right”, new KeyTrigger(KeyInput.KEY_D));
inputManager.addListener(actionListener,“Left”,“Right”);
}private ActionListener actionListener = new ActionListener() {
public void onAction(String binding, boolean keyPressed, float tpf) {
if(binding.equals(“Left”)){
left = keyPressed;
} else if(binding.equals(“Right”)){
right = keyPressed;
}
}
};//set the actions
public void simpleUpdate(float tpf){
if(left){
barra.move(0,0,-20tpf);
}
if(right){
barra.move(0,0,20tpf);
}
}
}[/java]