I'm just now picking up jMonkeyEngine and I've encountered an issue I can't seem to solve.
In the simpleInitApp
method in the main class, I can use the following code to successfully render a box:
Box playerBase = new Box(Vector3f.ZERO,1f,1f,1f);
Geometry playerBaseGeom = new Geometry("playerBase", playerBase);
Transform fixBaseHeight = new Transform(
new Vector3f(0f,(0.5f * 2f),0f));
playerBaseGeom.setLocalTransform(fixBaseHeight);
Material playerBaseMaterial = new Material(assetManager,
"Common/MatDefs/Misc/Unshaded.j3md");
playerBaseMaterial.setColor("Color", ColorRGBA.Yellow);
playerBaseGeom.setMaterial(playerBaseMaterial);
rootNode.attachChild(playerBaseGeom);
I tried to use a class called Tower
to be able to spawn several boxes representing towers (for a simple tower defense game). The tower class looks like this:
public class Tower {
private static final float HEIGHT = 0.5f;
private static final float WIDTH = 0.2f;
private static final float DEPTH = 0.2f;
private Geometry towerGeom;
private Material towerMaterial;
private Box tower;
public Tower(AssetManager assetManager, float x_coord, float z_coord) {
tower = new Box();
towerGeom = new Geometry("tower", tower);
towerMaterial = new Material(assetManager,
"Common/MatDefs/Misc/Unshaded.j3md");
towerMaterial.setColor("Color", ColorRGBA.Green);
towerGeom.setMaterial(towerMaterial);
towerGeom.setLocalTranslation(x_coord, (0.5f * .5f),z_coord);
towerGeom.setLocalScale(WIDTH, HEIGHT, DEPTH);
}
public Geometry getGeometry() {
return towerGeom;
}
}
In the main class, in the simpleInitApp
method, I tried to use my new Tower
class like this:
List <Tower> towers = new ArrayList<Tower>();
towers.add(new Tower(assetManager, 10f,8f));
for(Tower t:towers) {
rootNode.attachChild(t.getGeometry());
}
However, no cube is rendered. Why? I used the exact same procedure shown in the beginning, which worked.
The
Box()
constructor is meant for serialization only and doesn't initialize the mesh. The constructor in your upper example is deprecated. Use:This will create a cube of the size 1x1x1 centered at [0, 0, 0].
Also, make sure you look at the tower. With the default camera position and the tower at [10, 0, 8], it will be placed behind you.
I recommend consulting the jME source code for this kind of problem so you can be sure whats going on.