java - Implementing a Gamepad Controller in LIBGDX? -


i'm @ loss how implement libgdx controller support. here details.

let's i'm following tutorial here: http://obviam.net/index.php/getting-started-in-android-game-development-with-libgdx-create-a-working-prototype-in-a-day-tutorial-part-1/

the git tutorial @ part 4 (where i'm trying implement gamepad) here: https://github.com/obviam/star-assault/tree/part4

i've made final step , it's running , can interact character using keyboard. want make character controllable via controller either ouya or through usb.

i have read following: http://www.badlogicgames.com/wordpress/?p=2724 have added jar files main project , have ordered , exported. have modified gamescreen class follows:

import com.badlogic.gdx.application.applicationtype; import com.badlogic.gdx.gdx; import com.badlogic.gdx.input.keys; import com.badlogic.gdx.inputprocessor; import com.badlogic.gdx.screen; import com.badlogic.gdx.controllers.controller; import com.badlogic.gdx.controllers.povdirection; import com.badlogic.gdx.controllers.mappings.ouya; import com.badlogic.gdx.graphics.gl10; import com.badlogic.gdx.math.vector3;   public class gamescreen implements screen, inputprocessor, controllerlistener {  private world           world; private worldrenderer   renderer; private charactercontroller charactercontroller;  private int width, height;  @override public void show() {     world = new world();     renderer = new worldrenderer(world, false);     charactercontroller = new charactercontroller(world);     gdx.input.setinputprocessor(this); }  @override public void render(float delta) {     gdx.gl.glclearcolor(0.1f, 0.1f, 0.1f, 1);     gdx.gl.glclear(gl10.gl_color_buffer_bit);      charactercontroller.update(delta);     renderer.render(); }  @override public void resize(int width, int height) {     renderer.setsize(width, height);     this.width = width;     this.height = height; }  @override public void hide() {     gdx.input.setinputprocessor(null); }  @override public void pause() {     // todo auto-generated method stub }  @override public void resume() {     // todo auto-generated method stub }  @override public void dispose() {     gdx.input.setinputprocessor(null); }  // * inputprocessor methods ***************************//  @override public boolean keydown(int keycode) {     if (keycode == keys.left)         charactercontroller.leftpressed();     if (keycode == keys.right)         charactercntroller.rightpressed();     if (keycode == keys.up)         charactercontroller.jumppressed();     return true; }  @override public boolean keyup(int keycode) {     if (keycode == keys.left)         charactercontroller.leftreleased();     if (keycode == keys.right)         charactercontroller.rightreleased();     if (keycode == keys.up)         charactercontroller.jumpreleased();     return true; }  @override public boolean keytyped(char character) {     // todo auto-generated method stub     return false; }  @override public boolean touchdown(int x, int y, int pointer, int button) {     if (!gdx.app.gettype().equals(applicationtype.android))         return false;     if (x < width / 2 && y > height / 2) {         charactercontroller.leftpressed();     }     if (x > width / 2 && y > height / 2) {         charactercontroller.rightpressed();     }     return true; }  @override public boolean touchup(int x, int y, int pointer, int button) {     if (!gdx.app.gettype().equals(applicationtype.android))         return false;     if (x < width / 2 && y > height / 2) {         charactercontroller.leftreleased();     }     if (x > width / 2 && y > height / 2) {         charactercontroller.rightreleased();     }     return true; }  @override public boolean touchdragged(int x, int y, int pointer) {     // todo auto-generated method stub     return false; }  @override public boolean mousemoved(int screenx, int screeny) {     // todo auto-generated method stub     return false; }  @override public boolean scrolled(int amount) {     // todo auto-generated method stub     return false; }  @override public void connected(controller controller) {     // todo auto-generated method stub  }  @override public void disconnected(controller controller) {     // todo auto-generated method stub  }  @override public boolean buttondown(controller controller, int buttoncode) {     if (buttoncode == ouya.button_o) {                 charactercontroller.jumppressed();             }     return false; }  @override public boolean buttonup(controller controller, int buttoncode) {     if (buttoncode == ouya.button_o) {                 charactercontroller.jumpreleased();             }     return false; }  @override public boolean axismoved(controller controller, int axiscode, float value) {     // todo auto-generated method stub     return false; }  @override public boolean povmoved(controller controller, int povcode,         povdirection value) {     // todo auto-generated method stub     return false; }  @override public boolean xslidermoved(controller controller, int slidercode,         boolean value) {     // todo auto-generated method stub     return false; }  @override public boolean yslidermoved(controller controller, int slidercode,         boolean value) {     // todo auto-generated method stub     return false; }  @override public boolean accelerometermoved(controller controller,         int accelerometercode, vector3 value) {     // todo auto-generated method stub     return false; }  } 

so based on understand of how works, right when load on ouya character should jump when "o" button pressed. nothing happens. think i'm missing something. glaring mistakes in implementation?

where i'm @ java i've been web developing number of years , have returned java again play around games , interactive stuff on micro consoles. figure starting off simple tutorial , experimenting building on idea, right?

look forward getting awesome help!

thanks,

phil

try adding:

controllers.addlistener(this); 

right before:

gdx.input.setinputprocessor(this); 

setinputprocessor registers listeners built-in input events (keys, touch events, etc). controllers external library, , needs initialized , loaded separately.

you need import com.badlogic.gdx.controllers.controllers, too.


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

java.util.scanner - How to read and add only numbers to array from a text file -

iphone - Three second countdown in cocos2d -