Gamepad
ゲームパッドで入力する
1.紹介
押したボタンに応じて、表示されている文章が変わる。 サンプルプログラム『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