Hi there! My first week with jmonkeyengine and also my first post on forum! I was wondering if someone could help me as IRC seems pretty quiet - I can’t seem to get the chaseCam to rotate around an object in space when I rotate it and it looks right compared to all the sample tutorials and posts I read - any ideas?
[java]package com.soliniaonline.opencosmos;
import com.jme3.app.SimpleApplication;
import com.jme3.audio.AudioNode;
import com.jme3.input.ChaseCamera;
import com.jme3.input.FlyByCamera;
import com.jme3.input.KeyInput;
import com.jme3.input.MouseInput;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.AnalogListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.input.controls.MouseButtonTrigger;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.FastMath;
import com.jme3.math.Vector3f;
import com.jme3.post.FilterPostProcessor;
import com.jme3.post.filters.BloomFilter;
import com.jme3.renderer.Camera;
import com.jme3.scene.Geometry;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.Box;
import com.jme3.system.AppSettings;
import com.jme3.system.Timer;
import com.jme3.util.SkyFactory;
public class Main extends SimpleApplication {
private AudioNode audio_ambient_space;
protected Spatial player;
Boolean isRunning=true;
private ChaseCamera chaseCam;
@Override
public void simpleInitApp() {
//
// * Scene Backdrop
//
this.setDisplayFps(false);
this.setDisplayStatView(false);
rootNode.attachChild(SkyFactory.createSky(
assetManager, “Textures/Sky/sample.dds”, false));
audio_ambient_space = new AudioNode(assetManager, “Sounds/ambient/space_hollowwind.ogg”, false);
audio_ambient_space.setLooping(true); // activate continuous playing
audio_ambient_space.setPositional(true);
audio_ambient_space.setLocalTranslation(Vector3f.ZERO.clone());
audio_ambient_space.setVolume((float) 0.2);
rootNode.attachChild(audio_ambient_space);
audio_ambient_space.play(); // play continuously!
//
// * Sample player
//
player = assetManager.loadModel(“Models/Ships/base.obj”);
player.setName(“player”);
player.setLocalTranslation(Vector3f.ZERO);
Material mat_default = new Material(
assetManager, “Common/MatDefs/Misc/ShowNormals.j3md”);
player.setMaterial(mat_default);
//ship.scale((float) 0.01);
initKeys();
FilterPostProcessor fpp=new FilterPostProcessor(assetManager);
BloomFilter bloom=new BloomFilter();
bloom.setBloomIntensity(2.2f);
fpp.addFilter(bloom);
viewPort.addProcessor(fpp);
flyCam.setEnabled(false);
mouseInput.setCursorVisible(false);
this.chaseCam = new ChaseCamera(cam, player);
chaseCam.setEnabled(true);
chaseCam.setSmoothMotion(true);
player.addControl(chaseCam);
rootNode.attachChild(player);
}
private void initKeys() {
// TODO Auto-generated method stub
inputManager.addMapping(“Pause”, new KeyTrigger(KeyInput.KEY_P));
inputManager.addMapping(“RotateUp”, new KeyTrigger(KeyInput.KEY_W));
inputManager.addMapping(“RotateDown”, new KeyTrigger(KeyInput.KEY_S));
inputManager.addMapping(“RotateLeft”, new KeyTrigger(KeyInput.KEY_A));
inputManager.addMapping(“RotateRight”, new KeyTrigger(KeyInput.KEY_D));
inputManager.addMapping(“Accelerate”, new KeyTrigger(KeyInput.KEY_SPACE));
// Add the names to the action listener.
inputManager.addListener(analogListener, new String[]{“RotateLeft”});
inputManager.addListener(analogListener, new String[]{“RotateRight”});
inputManager.addListener(analogListener, new String[]{“RotateUp”});
inputManager.addListener(analogListener, new String[]{“RotateDown”});
inputManager.addListener(actionListener, new String[]{“Pause”});
inputManager.addListener(analogListener, new String[]{“Accelerate”});
}
private ActionListener actionListener = new ActionListener() {
public void onAction(String name, boolean keyPressed, float tpf) {
if (name.equals(“Pause”) && !keyPressed) {
isRunning = !isRunning;
}
}
};
private AnalogListener analogListener = new AnalogListener() {
public void onAnalog(String name, float value, float tpf) {
if (isRunning) {
if (name.equals(“RotateLeft”)) {
player.rotate(0.001f, 0, 0);
}
if (name.equals(“RotateRight”)) {
player.rotate(-0.001f, 0, 0);
}
if (name.equals(“RotateUp”)) {
player.rotate(0, 0,0.001f);
}
if (name.equals(“RotateDown”)) {
player.rotate(0,0,-0.001f);
}
if (name.equals(“Accelerate”)) {
// do nothing for now
}
} else {
System.out.println(“Press P to unpause.”);
}
}
};
/**
-
@param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Main app = new Main();
AppSettings settings = new AppSettings(true);
settings.setTitle("OpenCosmos");
settings.setResolution(1024,768);
settings.setBitsPerPixel(32);
settings.setFullscreen(false);
app.setSettings(settings);
app.setShowSettings(false);
app.start(); // start the game
}
}
[/java]