Gamepad

ゲームパッドで入力する


1.紹介

Gamepad_1.png
押したボタンに応じて、表示されている文章が変わる。
サンプルプログラム『aims-ver1.50/sample/02 isJoyPressed』では十字キーだけだったが、10ボタンほどに対応した。
ただ、キーコンフィグ機能も付けなければ実践向きではないけれど。




2.配布

練習プログラムのダウンロードはホームページのリンクから。(アクセス権限に引っかからないようにサイト移動)




3.参照

元のサンプルはここ。AIMS Headquarters/キーインプット




4.解説

────────────────────────────────────────
手順 1/4 user.cfg の削除。
────────────────────────────────────────
(やること1)
  • AIMS.luaを書き換えてもキー入力に変化がなかった場合、user.cfgを消すと直ることがあった。
    • キー設定は『AIMS.lua』(.exeファイル名の付いた.luaファイル)に書く。
    • この設定はゲーム起動時に『user.cfg』ファイルに保存されるのだと思う。




────────────────────────────────────────
手順 2/4 MAXIMUM_TRIGGERS の変更。
────────────────────────────────────────
手順 3/4 BIND_PAD_1P_TRIG★ の追加。
────────────────────────────────────────
手順 4/4 setJoyBind(0,BUTTON_TRIG★,BIND_PAD_1P_TRIG★) の追加。
────────────────────────────────────────
(やること2)
AIMS.lua には、使用するゲームパッドの数と、使用するボタンを書きます。

変更方法。

-- プレイヤー人数 有効デバイス数に直結します。
MAXIMUM_PLAYERS = 1;
MAXIMUM_TRIGGERS = 2;
USE_MOUSE = 0;

-- 1p ゲームパッド
BIND_PAD_1P_TRIG1 = 0;
BIND_PAD_1P_TRIG2 = 1;

と書かれてあるところを、

AIMS.lua

-- プレイヤー人数 有効デバイス数に直結します。
MAXIMUM_PLAYERS = 1;
MAXIMUM_TRIGGERS = 16; -- 【改変/】2→16
USE_MOUSE = 0;

-- 1p ゲームパッド
BIND_PAD_1P_TRIG1 = 0;
BIND_PAD_1P_TRIG2 = 1;
-- 【改変】追加した。ここから。
BIND_PAD_1P_TRIG3 = 2;
BIND_PAD_1P_TRIG4 = 3;
BIND_PAD_1P_TRIG5 = 4;
BIND_PAD_1P_TRIG6 = 5;
BIND_PAD_1P_TRIG7 = 6;
BIND_PAD_1P_TRIG8 = 7;
BIND_PAD_1P_TRIG9 = 8;
BIND_PAD_1P_TRIG10 = 9;
BIND_PAD_1P_TRIG11 = 10;
BIND_PAD_1P_TRIG12 = 11;
BIND_PAD_1P_TRIG13 = 12;
BIND_PAD_1P_TRIG14 = 13;
BIND_PAD_1P_TRIG15 = 14;
BIND_PAD_1P_TRIG16 = 15;
setJoyBind(0,BUTTON_TRIG3,BIND_PAD_1P_TRIG3);
setJoyBind(0,BUTTON_TRIG4,BIND_PAD_1P_TRIG4);
setJoyBind(0,BUTTON_TRIG5,BIND_PAD_1P_TRIG5);
setJoyBind(0,BUTTON_TRIG6,BIND_PAD_1P_TRIG6);
setJoyBind(0,BUTTON_TRIG7,BIND_PAD_1P_TRIG7);
setJoyBind(0,BUTTON_TRIG8,BIND_PAD_1P_TRIG8);
setJoyBind(0,BUTTON_TRIG9,BIND_PAD_1P_TRIG9);
setJoyBind(0,BUTTON_TRIG10,BIND_PAD_1P_TRIG10);
setJoyBind(0,BUTTON_TRIG11,BIND_PAD_1P_TRIG11);
setJoyBind(0,BUTTON_TRIG12,BIND_PAD_1P_TRIG12);
-- 【/改変】追加した。ここまで。


上のように書き換えれば、1プレイヤーのゲームパッドの各ボタンは、次のように拾える。

boot.lua の boot_OnStep関数

if(isJoyPressed(BUTTON_TRIG1))then
    -- ゲームパッドのボタン1が今押されている
end

if(isJoyPressed(BUTTON_TRIG2))then
    -- ゲームパッドのボタン2が今押されている
end

if(isJoyPressed(BUTTON_TRIG3))then
    -- ゲームパッドのボタン3が今押されている
end

if(isJoyPressed(BUTTON_TRIG4))then
    -- ゲームパッドのボタン4が今押されている
end

if(isJoyPressed(BUTTON_TRIG5))then
    -- ゲームパッドのボタン5が今押されている
end

if(isJoyPressed(BUTTON_TRIG6))then
    -- ゲームパッドのボタン6が今押されている
end

if(isJoyPressed(BUTTON_TRIG7))then
    -- ゲームパッドのボタン7が今押されている
end

if(isJoyPressed(BUTTON_TRIG8))then
    -- ゲームパッドのボタン8が今押されている
end

if(isJoyPressed(BUTTON_TRIG9))then
    -- ゲームパッドのボタン9が今押されている
end

if(isJoyPressed(BUTTON_TRIG10))then
    -- ゲームパッドのボタン10が今押されている
end

if(isJoyPressed(BUTTON_TRIG11))then
    -- ゲームパッドのボタン11が今押されている
end

if(isJoyPressed(BUTTON_TRIG12))then
    -- ゲームパッドのボタン12が今押されている
end

if(isMousePressed(MOUSE_LEFT))then
    -- マウスの左ボタンが今押されている
end

if(isMousePressed(MOUSE_RIGHT))then
    -- マウスの右ボタンが今押されている
end

if(isMousePressed(MOUSE_CENTER))then
    -- マウスの中央ボタンが今押されている
end




コラム: 実行順

readme.txt を読んだ時は、
(1)AIMS.lua(.exeファイル名の付いた.luaファイル)
(2)boot.luaのOnLoad
(3)boot_OnStart
の順に実行される、と解釈したが、

実行してみると、
(1)boot.luaのOnLoad
(2)boot.luaのboot_OnStart
(3)AIMS.lua(.exeファイル名の付いた.luaファイル)
の順に実行されているように思う。

  • BIND_PAD_1P_TRIG3 ~ BIND_PAD_1P_TRIG12 を AIMS.lua で定義して、
boot.lua の boot_OnStart関数で BIND_PAD_1P_TRIG3 ~ BIND_PAD_1P_TRIG12 を利用したら、
値が nil だった。

  • AIMS.lua と、 boot.luaのboot_OnStart、 どっちが処理されるのが早い?かを debugOut関数で
調べようとしてみたが、debugOut関数は、AIMS.luaの中で動かないので比較できない。



コラム: 定数について

ゲームパッド用に、最初から設定されているものは次の通り。(AIMS1.50)

doc/AIMS_Reference.pdf『表 1-8-1. common.lua にある論理ボタン定数』を元に編集
記号 説明
十字キー
BUTTON_RIGHT 方向キー入力 右。何も設定しなくても、反応する。
BUTTON_DOWN 方向キー入力 下。何も設定しなくても、反応する。
BUTTON_LEFT 方向キー入力 左。何も設定しなくても、反応する。
BUTTON_UP 方向キー入力 上。何も設定しなくても、反応する。
ゲームパッドのボタン ※「isJoyPressed」関数を使うこと
BUTTON_TRIG1 論理ボタン1。何も設定しなくても、反応する。
BUTTON_TRIG2 論理ボタン2。何も設定しなくても、反応する。
BUTTON_TRIG3 論理ボタン3。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG4 論理ボタン4。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG5 論理ボタン5。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG6 論理ボタン6。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG7 論理ボタン7。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG8 論理ボタン8。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG9 論理ボタン9。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG10 論理ボタン10。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG11 論理ボタン11。定数は定義されているが、setJoyBindしていないと反応しない。
BUTTON_TRIG12 論理ボタン12。定数は定義されているが、setJoyBindしていないと反応しない。
マウスのボタン ※「isMousePressed」関数を使うこと
MOUSE_LEFT マウスの左ボタン。何も設定しなくても、反応する。
MOUSE_RIGHT マウスの右ボタン。何も設定しなくても、反応する。
MOUSE_CENTER マウスの中央ボタン(ホイールクリック)。何も設定しなくても、反応する。
MOUSE_BUTTON4 マウスの論理ボタン4。私のPCでは、引数に指定したら範囲外エラーになった。
MOUSE_BUTTON5 マウスの論理ボタン5。私のPCでは、引数に指定したら範囲外エラーになった。

  • 最終更新:2013-09-22 11:12:34

このWIKIを編集するにはパスワード入力が必要です

認証パスワード