青トラップを例に説明します。
以下の@〜Cがすべて満たされた場合にのみ動き出すプログラムになっています。
@自機のY座標と、トラップのY座標の差が15ドット以内 → abs($Mychar.y-y)<15
A自機がトラップより左にいる → ($Mychar.x-x)>0
Bトラップが静止している → vx==0
C自機とトラップの間にブロックがない → Block_exist_x(x,y,$Mychar.x)==0
(例)自機がトラップの左にいる場合

「@〜Cの条件を満たした場合にトラップが動き出す」 ということをプログラムで書くと
以下のようになります。
if (abs($Mychar.y-y)<15 && ($Mychar.x-x)>0
&& vx==0 && Block_exist_x(x,y,$Mychar.x)==0)
vx= 3;
Block_exist_xはある位置からX方向に対し、ブロックが存在するか調べる
ファンクションです。初期のX座標から目的のX座標まで、32ドットおきにブロックが
あるか$map.getAtを使って調べ、ブロックの個数を戻り値として返すようになっています。
|
|
|
|