| | |
|
投稿者:たくみ 2005/12/14(水) 16:08
Ver0.189をリリースしました。
■キー検出系システム変数の機能拡張。押している/離している分だけ値が増加していくようにした。 ■システム変数 @_KEYLEAVE_〜 系を追加。また、@_KEYPUSHNUM_〜 系を @_KEYNUM_〜 系へと名称を戻した。
@_KEY_A で説明しますと、いままで、
・「A」キーを押している間はずっと1、離している時は0
でしたが、これを、
・「A」キーを押している間は1が加算され続け、離している時は0
となりました。つまり、押されている間、@_KEY_A の値が 0 → 1 → 2 → 3 → 4 → 5 → 6 → ... と増えていくわけです。
たったこれだけの仕様拡張なのですが、これによりキー入力チェックがかなり便利になります。 下にいろいろ例を挙げてみます。
//----------------------------------------------- 例1
LOOP[] IF[@_KEY_A==1] (〜処理A〜) IFEND[] WAIT[FRAME=1] LOOPEND[]
「A」が押された瞬間、1回だけ処理Aが実行されることになります。
//----------------------------------------------- 例2
LOOP[] IF[@_KEY_A] (〜処理A〜) IFEND[] WAIT[FRAME=1] LOOPEND[]
@_KEY_A の値が0以外なら式が「真」になるため、この場合 いままでの仕様通り、Aが押されているあいだ毎回処理Aが実行されます。
//----------------------------------------------- 例3
LOOP[] IF[@_KEY_A>=60] (〜処理A〜) IFEND[] WAIT[FRAME=1] LOOPEND[]
Aキーを60フレーム分(FPS60設定で1秒)押し続けたら、処理Aが実行されます。
//----------------------------------------------- 例4
INT[@SP_A=5] // ←2以上の値を入れてください LOOP[] IF[(@_KEY_A+@SP_A-1)%@SP_A==0] (〜処理A〜) IFEND[] WAIT[FRAME=1] LOOPEND[]
こんな書き方をすると、5フレームに1回、処理Aが実行されるようになります。 シューティングの連射設定などにも使えるかと思います。
//----------------------------------------------- 例5
LOOP[] IF[@_KEYLEAVE_A==30] (〜処理A〜) IFEND[] WAIT[FRAME=1] LOOPEND[]
@_KEYLEAVE_〜 系のシステム変数を利用すれば、 キーが離されている時間も取得することができます。 上の場合Aキーが30フレーム分(FPS60設定で0.5秒)押されなかったら、処理Aが実行されます。 これも工夫次第でいろいろ使えると思います。
//-----------------------------------------------
と、これだけいろいろ入力検出できるようになりました。 あともし、すでにスクリプトを記述されている方で、
IF[@_KEY_A ==1] 〜〜 IFEND[]
このように記述されていらっしゃる方は、 ひとまずいままでと同じ挙動にしておきたい場合、お手数ですが
IF[@_KEY_A] 〜〜 IFEND[] // ←「==1」をなくす.
というように置換をお願いいたします。m(_ _)m
また、 @_KEYPUSHNUM_〜 系のシステム変数が、 @_KEYNUM_〜 系へと名前が戻りました。 二転三転してしまって大変すみません。もし使っていらっしゃる方は、 そちらのほうも置換作業をお願いいたします。
■ファイル名の表記に「¥¥」を記述するとコンパイルエラーとなってしまっていたエンバグを修正。
CG[NO=1 FILE="cg\\abc.jpg"] という記述ができなくなってしまっていた不具合を修正しました。 マクロ機能を拡張した時に作ってしまったバグでした。
| |
| | |
|