こんにちは!
今回からテトリス的なものを作っていきます。長い連載にな
りますので、気長にお付き合いください。
なお、プログラムの内容は難しいので、初心者には向きませ
ん。いきなり作るのは厳しいのでよろしくお願いします。
また、説明も大幅に省いていきます。
最後に注意事項
ご紹介するのはあくまで「テトリス的」です。そのものでは
ありませんし、非常にシンプルに遊べるだけのものです。
連載終了後に、より詳しい技術的な解説&追加機能を加えた
電子書籍を発行する予定ですので、よろしくお願いします。
今回はブロックを落下させていきます
長くなって、わかりにくくなってます・・・
ごめんなさい。
//ブロックの位置(初期値)
int x=5;
int y=0;
//時間
public float delta;
//間隔
float span=1.2f;
変数の部分には、時間の設定をしておきます。
また、ブロックの位置を記憶する変数も用意します。
void MoveBlk(int x2,int y2){
int i,j;
//ブロックをいったん消して
for(i=0;i<4;i++){
for(j=0;j<4;j++){
field[x+i,y+j]-=blk[i,j];
}
}
//座標を更新
x=x2;
y=y2;
//ブロック入れ替え
for(i=0;i<4;i++){
for(j=0;j<4;j++){
field[x+i,y+j]+=blk[i,j];
}
}
}
ここが、ブロックを動かす部分です。
ブロックを全部消して、座標を入れ替えてから
再度ブロックを書き換えます。
再度ブロックを書き換えます。
void Update()
{
//時間の加算
delta += Time.deltaTime;
//時間経過後
if(delta>=span){
//重なってないなら移動
MoveBlk(x,y+1);
delta=0;
}
}
アップデートですが、spanを取らないと、高速で落ちて
何が起こったかわからないので、こうしておきましょう。
座標に1を加えて、それをspan間隔で行います。
ブロックは落ちていきますが、下の壁を突き抜けて
エラーを発生させ、終了してしまいます。
次回は、ブロックを停止させてみます。
(そこまでいったら、まとめてプログラムを紹介しますね)
それではよきプログラミングライフを!
またね。