トップページへ
 マップパターン
・水中   | 利用規約 | 使い方 | 操作方法 |
■説明
自機が水中に入ったときに、ゆっくりとした動きをするように
なります。水中以外に、宇宙空間などの演出にも使えます。

■参考
マップパターン − パターンを増やす
■解説
新たに水中用のパターンを準備します。マップパターン − パターンを増やすで作った
ファイルに追加して作ります。下図のようになりますが、$pat_block+60〜$pat_block+64に自機がいたときの動作を記述していきます。

◆block.bmpの構成



A. 背景(自機通り抜け可) : $pat_block+0〜$pat_block+19
B. ブロック(自機通り抜け不可):$pat_block+20〜$pat_block+39
C. ハシゴ : $pat_block+40〜$pat_block+59
D. 水中 : $pat_block+60〜$pat_block+64


1.初期処理
これだけパターンの種類が増えてくると、管理するのが大変になりますので、自機が
上図のA〜Dの、どの機能をするパターンにいるか、わかるようにしておきます。


tile_bg=(($map.getAt(x,y)>=$pat_block+ 0) && ($map.getAt(x,y)<=$pat_block+19));
tile_bl=(($map.getAt(x,y)>=$pat_block+20) && ($map.getAt(x,y)<=$pat_block+39));
tile_ld=(($map.getAt(x,y)>=$pat_block+40) && ($map.getAt(x,y)<=$pat_block+59));
tile_wt=(($map.getAt(x,y)>=$pat_block+60) && ($map.getAt(x,y)<=$pat_block+64));

変数は、tile_bg:背景、tile_bl:ブロック、tile_ld:ハシゴ、tile_wt:水中です。
たとえば自機が水中にいれば、tile_wtの値が1、水中にいなければ0になります。


2.左右の動きを鈍くする
歩行速度を、水中にいるときだけ半分にします。水中にいるときの速度をactual_wspに
代入して処理します。
actual_wsp=wsp;
if (tile_wt==1) actual_wsp=wsp*0.5;

if (xy01==TRUE) {f=-1;vx-=inr;if(vx<-actual_wsp) vx=-actual_wsp;}
if (xy02==TRUE) {f= 1;vx+=inr;if(vx> actual_wsp) vx= actual_wsp;}
if (xy03==TRUE) {f=-1;vx=-actual_wsp;}
if (xy04==TRUE) {f= 1;vx= actual_wsp;}



3.重力の調整
落下速度vyの増分を0.1にして、水中ではゆっくりと落ちるようにします。
move08=(tile_wt==1 && wY==0);
if (move08==TRUE) vy+=0.1;


4.ジャンプ力の調整
重力が減った分、陸上のジャンプ力-7ではやや大きいので、
水中ではvyを-5にしてみます。
jump03=(wY>= 1 && getkey(32)==1 && wY!= 2 && ld== 0 && tile_wt==1);
jump04=(ld== 2 && getkey(32)==1 && wY!=-1 && wY!= 2 && tile_wt==1);

if (jump03==TRUE) {vy=-5;jmp=1;}
if (jump04==TRUE) {vy=-5;jmp=1;}


5.アニメーション
水中では歩行アニメーションをゆっくりにします。
また、水中で落下したとき、自機の歩行アニメーションを止めます。

anim03=(vx!= 0 && jmp==0);
anim07=(anim03==1 && tile_wt==1);
anim08=(wY==0 && tile_wt==1);

if (anim07==TRUE) anim.swing($pat_chara+0,$pat_chara+2,12);
if (anim08==TRUE) {anim.swing($pat_chara+0,$pat_chara+2,8);anim.pause();}




|  トップページ | このサイトについて | 利用規約 | ご意見・お問い合わせ |

TonyuアクションRPG - ゲームプログラミング解説 -