趣味で作ってる不思議のダンジョン風ゲームだけど、ついにゲームパッドに対応してみた! 対応させること自体は、JInputを使えば簡単だった。結構簡単に、パッドからの入力を受け取れる。
以下はテストコード例。テスト環境としては、ELECOM のJC-PS101USVというのを使って、PS2のコントローラを使用。
以下はテストコード例。テスト環境としては、ELECOM のJC-PS101USVというのを使って、PS2のコントローラを使用。
import net.java.games.input.Component; import net.java.games.input.Controller; import net.java.games.input.ControllerEnvironment; public class Main { public static void main(String[] args) { ControllerEnvironment env = ControllerEnvironment.getDefaultEnvironment(); for(Controller cont : env.getControllers()) { if (cont.getType() == Controller.Type.STICK) { while(true) { try { Thread.sleep(100); } catch (InterruptedException e) { } cont.poll(); // コントローラの状態を更新 print(cont.getComponents()); } } } } private static void print(Component[] comp) { for(Component c : comp) { // int にキャストが適切かどうかは不明 int val = (int)c.getPollData(); if (c.getIdentifier() == Component.Identifier.Axis.X) { if (val == -1) { System.out.println("左"); } if (val == 1) { System.out.println("右"); } } if (c.getIdentifier() == Component.Identifier.Axis.Y) { if (val == -1) { System.out.println("上"); } if (val == 1) { System.out.println("下"); } } if (c.getIdentifier() == Component.Identifier.Button._0) { if (val == 1) { System.out.println("△"); } } if (c.getIdentifier() == Component.Identifier.Button._1) { if (val == 1) { System.out.println("○"); } } if (c.getIdentifier() == Component.Identifier.Button._2) { if (val == 1) { System.out.println("×"); } } if (c.getIdentifier() == Component.Identifier.Button._3) { if (val == 1) { System.out.println("□"); } } } } }
PR
トラックバック
トラックバックURL:
コメント
サンプルをありがとう
intにキャストせず、floatのまま使わないとスティックの倒し加減などを読みとれないのでは?
posted by 空住所at 2011/05/08 00:34 [ コメントを修正する ]