Hello again, it’s TheWayIsNotSimple here,how’s going?
So, i’ve done a radar mechanism, complete with radar-like image and sprites for object , but in some way it’s going weird in behaviour; i’ll past here the code and if you wanna give a try , you’re welcome
i’ll post here the code and images, hope you find in here some interesting things Thenk you for your Huge support
[java]
package mygame;
import com.jme3.app.SimpleApplication;
import com.jme3.bullet.BulletAppState;
import com.jme3.bullet.control.RigidBodyControl;
import com.jme3.font.BitmapText;
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.MouseAxisTrigger;
import com.jme3.light.AmbientLight;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Ray;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.shape.Box;
import com.jme3.ui.Picture;
import java.util.ArrayList;
public class Main extends SimpleApplication{
Picture pic;
ArrayList nearobj= new ArrayList(),nearsign= new ArrayList() ;
BulletAppState bas = new BulletAppState();
RigidBodyControl rgb;
Node terra = new Node();
Ray r;
Picture radar;
Node minimap = new Node();
int range = 100;
public static void main(String[] args) {
Main app = new Main();
app.start();
}
@Override
public void simpleInitApp() {
flyCam.setMoveSpeed(100);
setDisplayStatView(false);
setDisplayFps(false);
stateManager.attach(bas);
rootNode.attachChild(terra);
initKeys();
initWorld();
initGui();
}
@Override
public void simpleUpdate(float tpf) {
updateMap();
}
@Override
public void simpleRender(RenderManager rm) {
//TODO: add render code
}
public void initWorld() {
addB(0,0,0);
//addB(3,0,-3);
// addB(3,0,3);
// addB(-3,0,3);
addB(3,0,-13);
addB(3,0,43);
AmbientLight ambient = new AmbientLight();
ambient.setColor(ColorRGBA.White);
rootNode.addLight(ambient);
viewPort.setBackgroundColor(ColorRGBA.White);
}
public void initGui() {
minimap.setLocalTranslation(100, 100, 0);
guiNode.attachChild(minimap);
radar = new Picture("Cross");
radar.setImage(assetManager, "Interface/cross.png", true);
radar.setPosition(0, 0);//5.5
radar.setHeight(200);
radar.setWidth(200);
guiNode.attachChild(radar);
}
public void updateMap(){
for(int i =0;i<terra.getQuantity();i++){
Vector3f vecObj=terra.getChild(i).getWorldTranslation();
Vector3f vectCam=cam.getLocation();
float tmpdist=vectCam.distance(vecObj);
if(tmpdist<=range && !nearobj.contains(terra.getChild(i))){
pic = new Picture("object");
pic.setImage(assetManager, "Interface/obj.png",true);
pic.setLocalScale(20);
minimap.attachChild(pic);
Vector3f tmp = vectCam.add(vecObj);
tmp.mult(2);
pic.setPosition(tmp.getX(), tmp.getZ());
nearobj.add(terra.getChild(i));
nearsign.add(pic);
}
if(tmpdist>range && nearobj.contains(terra.getChild(i))){
int index = nearobj.indexOf(terra.getChild(i));
nearobj.remove(terra.getChild(i));
minimap.detachChild((Picture)nearsign.get(index));
nearsign.remove(index);
}
if(tmpdist<range && nearobj.contains(terra.getChild(i))){
int index = nearobj.indexOf(terra.getChild(i));
pic =(Picture) nearsign.get(index);
Vector3f tmp = vectCam.add(vecObj);
//tmp.mult(2);
pic.setPosition(tmp.getX(), tmp.getZ());
}
}
}
public void addB(float xx,float yy,float zz){
Box b = new Box(1,1,1);
Geometry g = new Geometry("", b);
g.setName("box_"+terra.getQuantity());
g.setLocalTranslation(xx, yy, zz);
Material boxMat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
boxMat.setBoolean("UseMaterialColors", true);
boxMat.setColor("Ambient", ColorRGBA.Green);
boxMat.setColor("Diffuse", ColorRGBA.Red);
//boxMat.getAdditionalRenderState().setWireframe(true);
g.setMaterial(boxMat);
terra.attachChild(g);
BitmapText txt = new BitmapText(assetManager.loadFont("Interface/Fonts/Default.fnt"), true);
txt.setUserData("names", new String("rotate"));
txt.setColor(ColorRGBA.Blue);
txt.setSize(0.1f);
txt.setText(g.getName());
txt.setLocalTranslation(xx, yy+3, zz);
rootNode.attachChild(txt);
}
public void initKeys() {
inputManager.addMapping("right",new MouseAxisTrigger(MouseInput.AXIS_X, true));
inputManager.addMapping("left",new MouseAxisTrigger(MouseInput.AXIS_X, false));
inputManager.addListener(analogListener, "right");
inputManager.addListener(analogListener, "left");
}
private ActionListener actionListener = new ActionListener(){
public void onAction(String name, boolean pressed, float tpf){
System.out.println(name + " = " + pressed);
}
};
public AnalogListener analogListener = new AnalogListener() {
public void onAnalog(String name, float value, float tpf) {
if(name.equals("left")){
minimap.rotate(0, 0, value);
}
if(name.equals("right")){
minimap.rotate(0, 0, -value);
}
}
};
}
[/java]
here’s the images link:
Images :-o