・概要
キー入力の処理は、
マスクとゼロにおいて行っている。
・loadの処理
・・概要
・・キーコード
キーコードを代入する。
ASのファイル:mask.txt
_root.key_up=87;…
「_root.key_xxx」は、キーコードを代入するための変数である。
このゲームでは、例えば、初期状態では、「Wのキー」を「上キー」として割り当てているため、「_root.key_up」に、「Wに対応するキーコード」である「87」を代入している。
・・キーの名前のリスト
記述を簡略化するため、「キーの名前のリスト」を作成している。
また、「キーの名前の個数」を「ループの終値」として設定している。
ASのファイル:mask.txt
_root.key_name_list=["up","down","right","left","jump","dash","saber","buster","start","select"] //キーの名前のリスト
_root.i_key_name_max=_root.key_name_list.length //ループの終値(キーの名前)
・・キー入力の判定の結果を代入するMC
マスクにおいては、「キー入力の判定の結果を代入するMC」を「_root」にしている。このように設定することで、他のMCからもキー入力の判定の結果を参照できるようになる。
ASのファイル:mask.txt
keydown_MC=_root //キー入力の判定の結果を代入するMC
・・キー入力の判定
「キーの名前のリスト」を用いて、各種の「キー入力の判定」に初期値である「0」を代入している。
ASのファイル:mask.txt
for(i=1;i<=_root.i_key_name_max;i++){
keydown_MC["keydown_"+_root.key_name_list[i-1]]=0 //キー入力の判定(0:入力がない,1:入力がある)
keydown_MC["keydown_old_"+_root.key_name_list[i-1]]=0 //キー入力の判定(保存用)
keydown_MC["keydown_new_"+_root.key_name_list[i-1]]=0 //キー入力の判定(新たに入力があったか否か)(0:入力がない,1:入力がある)
}
・各キーの入力に関する判定(マスク)
・・概要
各キーの入力に関する判定は、2つの処理に分けられている。マスクの場合は、連続して行っている。
ASのファイル:mask.txt
#include "zero_AS/keydown_1.txt"
#include "zero_AS/keydown_2.txt"
・・キー入力の判定
「現在のフレームにおいて、キー入力があるか否か」を判定する。「ある場合」は「1」、「ない場合」は「0」を代入する(他の変数も同様)。
ASのファイル:keydown_1.txt
if(Key.isDown(_root["key_"+_root.key_name_list[i-1]])){keydown_MC["keydown_"+_root.key_name_list[i-1]]=1} //キー入力の判定
else{keydown_MC["keydown_"+_root.key_name_list[i-1]]=0}
・・キー入力の判定(保存用)
上記の判定の結果を保存する。この処理は、ASの最後に記述する必要がある。
ASのファイル:keydown_2.txt
keydown_MC["keydown_old_"+_root.key_name_list[i-1]]=keydown_MC["keydown_"+_root.key_name_list[i-1]] //キー入力の判定(保存用)にキー入力の判定を代入
・・キー入力の判定(新たに入力があったか否か)
ASのファイル:keydown_1.txt
if(keydown_MC["keydown_"+_root.key_name_list[i-1]]==1 and keydown_MC["keydown_old_"+_root.key_name_list[i-1]]==0){keydown_MC["keydown_new_"+_root.key_name_list[i-1]]=1} //キー入力の判定(新たに入力があったか否か)
else{keydown_MC["keydown_new_"+_root.key_name_list[i-1]]=0}
・各キーの入力に関する判定(ゼロ)
・・概要
ゼロは、マスクとは別に「各キーの入力に関する判定」を取得している。理由は、以下の通りとなる。
・マスクにおける判定を用いると、原理的に、キー入力に対する反応が1フレーム遅れる。
・マスクにおける判定を用いると、セイバーのヒットストップの影響で、キー入力が無効化される場合が出てくる。
・・loadの処理
・・・キー入力の判定の結果を代入するMC
ゼロの場合は、「キー入力の判定の結果を代入するMC」は、「this」(ゼロの
hitrect)となる。
ASのファイル:zero_load.txt
keydown_MC=this //キー入力の判定の結果を代入するMC
・・各キーの入力に関する判定
ゼロの場合は、マスクとは異なり、間に「キー入力関連の処理」を挟むことになる。
ASのファイル:zero.txt
#include "zero_AS/keydown_1.txt"
︙
#include "zero_AS/keydown_2.txt"
・・例
↓ジャンプキーの例。
「keydown_jump」が「1」の場合であっても、必ずしも「ジャンプ開始に移行」するとは限らない。同時に「keydown_old_jump」が「0」となり、「keydown_new_jump」が「1」となった場合にのみ「ジャンプ開始に移行」する。
最終更新:2020年12月12日 10:51