※今回は短めの記事です。読了3分くらいです。
SEの方の間でも評価が上昇傾向のビジュアルプログラミング言語、Viscuit(以下ビスケット)でマリオ風のゲームを作成していきます。#7で小マリオがスタート位置からフラッグのところまで移動できるようになりました。…が、またもや問題発生w
※ビスケットのコーディングは全て描画で行います。こちらの記事はビスケットでのコーディングを簡潔に紹介するため、敢えてサッパリした描画のプログラムにしております。こちらをベースに、お好みの描画でオリジナリティーの高いプログラムに仕上げてくださいm(_ _)m
端から落下する当たり判定
これを当たり判定と言って良いか?ですが、「ブロックの位置関係と動き」の判定という意味で使ってます。前回までの制作で、小マリオは一通り動くようになったので安心していましたが、問題発生です。
ブロックの端から自然落下できない!
ビスケットで少し複雑なものを作り始めるとよく、こういうことが起きます。
原因は明白なのです!
ブロックの端から落ちる命令を作っていないからw
こうなると、「何か効率よく作る方法はないのかなあ?」となり、考えること数十分…数時間…数日間…ってなると、いやになってきます^ - ^。
そうなる前に発想の転換です。
「急がば回れ」
一見回り道に思えますが、単純なメガネを一つ一つ積み重ねた方が早い場合が多いのがビスケットのプログラミングです。
(もちろん、たまーに効率を改善する画期的な方法を見つけることもあります。効率を考えることは良いことですが、大抵作ってしまった方が早いデス)
では作っていきます。割れるブロック、ハテナブロック、割れないブロック、土管IN、土管OUTの5種類分×2セット分(左右)=割れたメガネ10個でできます。
はい、約10分程で、「端からの自由落下」プログラムの完成です。
10個の割れたメガネ群の意味を、一般的なプログラム風にまとめて訳すと
「もし小マリオが割れるブロック(ハテナブロック/割れないブロック/土管IN/土管OUT)の端に位置し、なおかつ左(右)に重力センサー(⬇︎)が存在する位置に位置する時、十字キーの左(右)の入力があれば、左(右)にある重力センサーと場所が入れ替わる(つまり左(右)に移動する)」
という意味になります。
足元に重力センサーがある位置まで移動するわけですから、この後は自由落下するわけです。
どんなプログラミングでもトライアル&エラーの積み重ねですね。今回は短時間で解決でした!