(注意)
この連載は、ある程度ゲームを作ったことある人の
ためのものです。「アタッチ」とか「C#スクリプト
の作成」とか「カメラアングルの変更」とか、その
レベルの話は省略しています。よろしくお願いしま
す。
前回の続きです。
無秩序に置けるブロックをなんとかします。
床に接してしまったブロックが1個でもあれば。
全部まとめて今までのを消してしまいます。
ただし、1個目はちゃんと置けるようにしないと。
スコアの数字で1個目かどうかを判断しています。
(blockCのCollision改変です)
private void OnCollisionEnter(Collision collision)
{
//最初のブロックは消えないからフラグを落下OKにする
if (collision.gameObject.name=="Field"&&GC.Score==1) {
GC.flag = 0;
}
//地面に接したら今までの全部消える
if (collision.gameObject.name == "Field" && GC.Score > 1)
{
//Blocksタグの付いたものを格納し、
GameObject[] blks = GameObject.FindGameObjectsWithTag("Blocks");
//オブジェクトに数を数えさせて、その分だけ実行
foreach (GameObject blk in blks)
{
//消す
Destroy(blk);
//Flag戻す
GC.flag = 0;
//スコアも戻す
GC.Score = 0;
}
}
//ブロックの上に落ちたのはflag普通に返す
if (collision.gameObject.name == "Block(Clone)")
{
GC.flag = 0;
}
}
for eachやらwithTagなどの技術が出てきます。
ブロックのPrefabにはBlocksタグをつけましたが、
ここでそれが役に立ってきます。
お?もう既にこれでもゲームとして成立しそうです・・・。
ちょっと難しいけど。
ブロックが積み上がると射出が引っかかる問題は次回
にしましょう。
質問があればDMやらコメントをお願いします。
それではよきプログラミングライフを!
またね。