トップページへ
 これ以上簡単に書けないゲーム制作講座
 ブロックに着地する 前のページ   次のページ
今のプログラムではブロックにあたっても落下を続けるようになっているため、改良します。

extends SpriteChar;

/*キャラクタ歩行プログラム
左右のキーを押すとキャラクタが
足踏みしながら移動します。*/

$map.setBGColor(color(0,200,255)); //背景色の変更
p=$pat_chara+0;
anim=newAnimation();

while(1){
anim.pause();
if (getkey(39)>2) { //右のキーが押されたとき
anim.swing($pat_chara+0,$pat_chara+2,12);
//キャラクタのアニメーション
x=x+1; //右へ1ドット移動
f=1; //右を向く
}
if (getkey(37)>2) { //左のキーが押されたとき
anim.swing($pat_chara+0,$pat_chara+2,12);
//キャラクタのアニメーション
x=x-1; //左へ1ドット移動
f=-1; //左を向く
}

if ($map.getAt(x,y)==$pat_block+0){
//ブロックに当たった場合
vy=0; //落下速度を0にする
} else {
//ブロックに当たっていなかった場合
vy=vy+0.5; //落下速度を上げる
}
y=y+vy;


update();
}

ここで新しく$map.getAt(x,y)という命令がでてきますが、これは(x,y)地点にあるマップのキャラクタパターンを返すという働きがあります。空中にいるときだけ落下させたいので、ブロックに当たったときは落下速度を0にし、それ以外の時は落下速度をあげればよいのです。

実行してみると、ブロックでとまりました。しかしブロックにめり込んだ不自然な状態になっています。

前のページ   次のページ


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

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