Processingを使っていると、入力デバイスとしてマウスやキーボードではもの足りないと感じることがときどきあります。
そこでむかしのPlayStation2のゲームコントローラが使えるかどうか試してみました。
環境はMacでUSBインターフェイスはエレコムのものを使います。(これもかなり古い)
コードはProcessingのライブラリ(Game Control Plus 1.2.1)を使い、そのサンプルコードを参考にしました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import org.gamecontrolplus.gui.*; import org.gamecontrolplus.*; ControlIO control; ControlDevice stick; float px1, py1, px2, py2; ArrayList<PVector> shadows = new ArrayList<PVector>(); ArrayList<PVector> trail = new ArrayList<PVector>(); public void setup() { size(400, 400); control = ControlIO.getInstance(this); stick = control.getMatchedDevice("joystick"); if (stick == null) { println("No suitable device configured"); System.exit(-1); } } public void getUserInput() { px1 = map(stick.getSlider(0).getValue(), -1, 1, 0, width); py1 = map(stick.getSlider(1).getValue(), -1, 1, 0, height); px2 = map(stick.getSlider(2).getValue(), -1, 1, 0, width); py2 = map(stick.getSlider(3).getValue(), -1, 1, 0, height); boolean b1 = stick.getButton(0).pressed(); //triangle boolean b2 = stick.getButton(1).pressed(); //circle boolean b3 = stick.getButton(2).pressed(); //x-mark boolean b4 = stick.getButton(3).pressed(); //square boolean b5 = stick.getButton(4).pressed(); //L2 boolean b6 = stick.getButton(5).pressed(); //R2 boolean b7 = stick.getButton(6).pressed(); //L1 boolean b8 = stick.getButton(7).pressed(); //R1 boolean b9 = stick.getButton(8).pressed(); //start boolean b10 = stick.getButton(9).pressed(); //select println(b1 + "," + b2 + "," + b3 + "," + b4 + "," + b5 + "," + b6 + "," + b7 + "," + b8 + "," + b9 + "," + b10); } public void draw() { getUserInput(); // Polling background(255, 255, 240); noStroke(); fill(255, 64, 64, 255); ellipse(px1, py1, 20, 20); fill(64, 64, 255, 255); ellipse(px2, py2, 20, 20); } |
コントローラの各ボタン、アナログスティックx2の受信の確認ができました。
まだまだ現役で使えそうです。