-
Notifications
You must be signed in to change notification settings - Fork 0
Touchable JGameObject
Radomiej edited this page Jun 18, 2016
·
6 revisions
Javity provide easy system for fast touch input proccess, like:
- click
- mouse-over
- dragged
- pressed
- relased
You must remember that GUI elements have higher priority handle input events, it means if input collision ocurs with GUI element like button, other collisions with GameObject doesn`t proccess.
public class MyComponent extends DefaultComponent {
@Override
public void start() {
}
@Override
public void update() {
}
@Override
public void onMouseClicked() {
System.out.println("onMouseClicked");
}
@Override
public void onMouseDragged(Vector2 draggedDelta) {
System.out.println("onMouseDragged");
}
@Override
public void onMousePressed() {
System.out.println("onMousePressed");
}
@Override
public void onMouseRelased() {
System.out.println("onMouseRelased");
}
@Override
public void onMouseOver() {
System.out.println("onMouseOver");
}
}example scene and GameObject with own components:
public class SceneMapBulider implements SceneBulider{
@Override
public String getSceneJson() {
long size = (long) Math.pow(2, 18);
JGameObject map = Prefabs.createGameObject();
Prefabs.addComponent(map, new SpriteRenderer("badlogic.jpg"));
Prefabs.addComponent(map, new MyComponent());
Prefabs.addComponent(map, new RectangleCollider(size, size));
Prefabs.addComponent(map, new Rigidbody(true));
map.getTransform().setScale(new Vector2(1, 1));;
Scene scene = new CustomScene();
scene.instantiateGameObject(map, new Vector2(100, 100));
String sceneJson = JSceneManager.saveToJson(scene);
return sceneJson;
}
}You can use MyComponent to input handled and move map if is dragging:
@Override
public void onMouseDragged(Vector2 draggedDelta) {
System.out.println("dragged");
Vector2 position = getTransform().getPosition();
position.add(draggedDelta.x, -draggedDelta.y);
getTransform().setPosition(position);
}