Menu
CoddyTech

壁

Coddyの「Unityゲーム:ブロック崩し」コースのレッスン 5/19。

ブロックはグリッド状に並びます。上から下へ行が並び、左から右へ列が並びます。それぞれは、2つの入れ子になったループで作成された Brick プレハブのコピーです。まずは1行分です。

float left = -(columns - 1) * spacingX / 2f;
for (int col = 0; col < columns; col++)
{
    Vector3 pos = new Vector3(left + col * spacingX, topY, 0f);
    Instantiate(brickPrefab, pos, Quaternion.identity, wall);
}

n 列の間には n - 1 個の隙間があるため、最初の列は (n - 1) * spacing の半分だけ左に配置されます。間隔が2の5列なら、-4、-2、0、2、4の位置に並びます。各行は、ひとつ前の行より spacingY だけ下になります。Instantiate の第4引数は親オブジェクトなので、すべてのブロックは Wall オブジェクトの子になります。プレハブのフィールドに Brick のようなスクリプト型を指定すると、Instantiate は新しいブロックのスクリプトを返します。

challenge icon

チャレンジ

中級

中央にレンガの壁を作成します。

  1. GameManagerに、public Brick brickPrefab;、public Transform wall;、rows = 5、columns = 9、spacingX = 1.75f、spacingY = 0.75f、topY = 6fを追加します。
  2. BuildWall():各行と列について、wallの子としてレンガを配置します。x座標はleft + col * spacingX、y座標はtopY - row * spacingY、z座標は0とし、left = -(columns - 1) * spacingX / 2fとします。
  3. Start()からBuildWall()を呼び出します。

「プレイ」を押すと、45個のレンガが格子状に並びます(まだ壊れません)。次に「確認」を押します。

自分で試してみよう

using UnityEngine;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    void Awake()
    {
        Instance = this;
    }

    // 後で実装するもの:レンガの壁、スコア、残機、レベル。
}

Unityゲーム:ブロック崩しのすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド