前回の続き。
今までは固定でオブジェクトを置いていましたが、これではそのパターン以外何も変化がありません。
ボール転がしゲームと同じように、各オブジェクトをプレハブ化して、起動時にオブジェクトを初期化して配置するようにします。
作ったオブジェクトをAssets配下に移動してプレハブ化。
ヒエラルキーにある元のオブジェクトは削除してしまってOK。
これでさっぱりしますね。
そして、空オブジェクトを作って、そこにスクリプトを追加。
いきなり色々と作ると大変なので、まずはブロックを規則正しく担ってしまいますが、一定数を一定座標に配置するように作ってみます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BreakBlocksGame : MonoBehaviour
{
public GameObject PlayerPrefab;
public GameObject GameBoardPrefab;
public GameObject BallPrefab;
public GameObject BlockPrefab;
void Start()
{
GameObject GameBoard = GameObject.Instantiate(GameBoardPrefab);
GameObject Player = GameObject.Instantiate(PlayerPrefab);
GameObject Ball = GameObject.Instantiate(BallPrefab);
ArrangeBlocks();
}
void Update()
{
}
private void ArrangeBlocks()
{
for (int i=0; i<5; i++)
{
for (int j=0; j<5; j++)
{
GameObject block = GameObject.Instantiate(BlockPrefab);
block.transform.position = new Vector3(-40 + 20*j, 0, 5 + 8*i);
}
}
}
}
- Start : 開始時に呼び出される関数(1度だけ)
- Update : フレームごとに呼び出される関数(繰り返し)
なので、Start() の中で各オブジェクトを初期化。
そして、ブロックはforループで適当に配置。
あとこれとは別にボールが大きすぎたので、気持ち小さめに(笑)
そしてテスト。
うん、何となくうまくいきましたね。
ブロック崩し テスト5
続く。
coublood.hatenablog.com