にしのクエスト2

情報処理技術者試験と資格学校講師の日常

20221224103753

Unityで学ぶプログラミング  テトリス的を作る(6)ブロックを停止させる

こんにちは!

今回からテトリス的なものを作っていきます。長い連載にな
りますので、気長にお付き合いください。

なお、プログラムの内容は難しいので、初心者には向きませ
ん。いきなり作るのは厳しいのでよろしくお願いします。
また、説明も大幅に省いていきます。

最後に注意事項
ご紹介するのはあくまで「テトリス的」です。そのものでは
ありませんし、非常にシンプルに遊べるだけのものです。

連載終了後に、より詳しい技術的な解説&追加機能を加えた
電子書籍を発行する予定ですので、よろしくお願いします。


今回はブロックを停止してみましょう
ここまで、長くなってしまったので。一回全てのプログラムを
公開しておきたいと思います。(次回はまとめ!ってことです)

//移動チェック

int ChkBlk(int x2,int y2){
int i,j;

for(i=0;i<4;i++){
for(j=0;j<4;j++){
//ブロックがあって
if(blk[i,j]!=0){
//移動予定地もブロックなら
if(stage[x2+i,y2+j]!=0){
//1を返しなさい
return 1;
}
}
}
}
//どちらも該当しないなら0を返す
return 0;
}

移動チェックのブロックを作っておきます。

void Update()
{
//時間の加算
delta += Time.deltaTime;
 
//時間経過後
if(delta>=span){
//自然移動下に行けるかチェックして
if(ChkBlk(x,y+1)==0){
//重なってないなら移動
MoveBlk(x,y+1);
delta=0;
}
}
}

そして、アップデートの部分にチェックを
入れてあげます。

下座標を探してあげます。

f:id:koharuwest:20210117175742p:plain


エラーは発生しなくなりましたね!
ブロックも壁でストップするようになりました。

次回は、ここまでのまとめです!

ここから、まとめが終わったら
・ブロックを次々と降らせる
・ブロックを左右に動かす
・ブロックが揃ったら消える
という流れになります。

f:id:koharuwest:20210117110657p:plain


それではよきプログラミングライフを!
またね。