YU-RIS サポート掲示板

0314 Ver0.189
投稿者:たくみ 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"]
という記述ができなくなってしまっていた不具合を修正しました。
マクロ機能を拡張した時に作ってしまったバグでした。


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)