(Java)Membuat Input system control navigasi _ Jmonkey Engine

Selamat malam gan, apa nih aktifitas akhir pekan ente, apa kah membawa hasil maksimal atau masih merasa jenuh dengan kegiatan sehari-hari, tapi kalo udah akhir pekan ane jamin udah fresh lagi ya. Kalo ane terbiasa refreshing dengan memikirkan konsep yang akan di buat, jadi kita sambil akhir pekan dan sekalian cari ide dan jalan keluar, ngomong-ngomong dengan konsep, berapa banyak orang di dunia ini yang sudah membuat konsep tapi di dalam pikiran orang lain itu gagal, semua itu salah, karena orang yang membuat konsep, tetapi konsep itu belum tercapai hingga saat ini, itu merupakan ketertundaan, dimana ketika konsep kita tidak dapat di selesaikan dengan sendiri atau team, cobalah untuk sharing dengan orang yang kira-kira mampu untuk menyelesaikannya, itu pasti sangat membantu konsep agan. tapi kalo setiap orang tidak memiliki konsep itu sama saja dia orang yang kurang beruntung, banyak pepatah yang mengatakan orang yang menyianyiakan kehidupan, merupakan orang yang rugi.

Kontol kehidupan, kontrol pikiran, Kontol keuangan dan sebagainya, itulah konsep dari tema kita hari ini, ini dapat di bayangkan dengan gimana cara kita mengontrol kehidupan sehari-hari, sama dengan tema kita, karena kita merupakan orang yang membuat, sehingga kontrol itu semua kita yang lakukan, tidak mungkin orang lain dan orang terdekat, tapi kali ini kita membuat kontol ini menggunakan device keyboard dan mouse, karena saya masih mencari referensi gimana menghubungkan aplikasi dengan kontrol mobile dan sensor di sekitar kita, tapi kalo ngomong tentang sensor ane ada sedikit pengalaman ketika ane bermain dengan sensor pada device mobile, pada saat ane membua sebuah kontrol sensor panas pada sebuah device, eh ternyata sensor itu digunakan untuk sensor accelo, itu gak tau padahal dari codenya udah kemungkinan benar, tapi pada saat ane mencoba langsung ke device lain, ternyata jalan, ane tidak ngomong tentang merek, itu sajalah pengelaman ane bermain dengan sensor. Masukan dari ane, kalo agan sudah membuat aplikasi cobalah di beberapa device, karena setiap device memiliki kebutuhan yang berbeda.

Create project dengan nama InputSystemControl dan buka class main.java

package mygame;

import com.jme3.app.SimpleApplication;
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.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;

/**
 * test
 * @author normenhansen
 */
public class Main extends SimpleApplication {

    public static void main(String[] args) {
        Main app = new Main();
        app.start();
    }

     protected Geometry player;
  Boolean isRunning=true;
 
  @Override
  public void simpleInitApp() {
    Box b = new Box(Vector3f.ZERO, 1, 1, 1);
    player = new Geometry("Player", b);
    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat.setColor("Color", ColorRGBA.Blue);
    player.setMaterial(mat);
    rootNode.attachChild(player);
    initKeys(); // load my custom keybinding
  }
 
  /** Custom Keybinding: Map named actions to inputs. */
  private void initKeys() {
    // You can map one or several inputs to one named action
    inputManager.addMapping("Pause",  new KeyTrigger(KeyInput.KEY_P));
    inputManager.addMapping("Left",   new KeyTrigger(KeyInput.KEY_J));
    inputManager.addMapping("Right",  new KeyTrigger(KeyInput.KEY_K));
    inputManager.addMapping("Rotate", new KeyTrigger(KeyInput.KEY_SPACE),
                                      new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    // Add the names to the action listener.
    inputManager.addListener(actionListener, new String[]{"Pause"});
    inputManager.addListener(analogListener, new String[]{"Left", "Right", "Rotate"});
 
  }
 
  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("Rotate")) {
          player.rotate(0, value*speed, 0);
        }
        if (name.equals("Right")) {
          Vector3f v = player.getLocalTranslation();
          player.setLocalTranslation(v.x + value*speed, v.y, v.z);
        }
        if (name.equals("Left")) {
          Vector3f v = player.getLocalTranslation();
          player.setLocalTranslation(v.x - value*speed, v.y, v.z);
        }
      } else {
        System.out.println("Press P to unpause.");
      }
    }
  };

    @Override
    public void simpleUpdate(float tpf) {
        //TODO: add update code
    }

    @Override
    public void simpleRender(RenderManager rm) {
        //TODO: add render code
    }
}
 

Dapat di lihat pada code diatas, bahwa bagian kontol itu ada pada :
if (name.equals(“Rotate”)) {
player.rotate(0, value*speed, 0);
}
if (name.equals(“Right”)) {
Vector3f v = player.getLocalTranslation();
player.setLocalTranslation(v.x + value*speed, v.y, v.z);
}
if (name.equals(“Left”)) {
Vector3f v = player.getLocalTranslation();
player.setLocalTranslation(v.x – value*speed, v.y, v.z);
}
} else {
System.out.println(“Press P to unpause.”);

ini semua di buat dengan logika, tidak ada aktifitas yang langsung otomatis dibuat.

Run

inputkontrol

Referensi :

http://jmonkeyengine.org/wiki/doku.php/jme3:beginner:hello_input_system

Advertisements

Published by

jarcode

hello I am jarcode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s