Menu
CoddyTech

ドロップ

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

壊れたブロックは、ときどきパワーアップを落とし、それはパドルに向かって落下します。落とすかどうかは確率判定です。Random.valueは0から1までのランダムな浮動小数点数なので、Random.value < 0.15fは約100回中15回trueになります。確率をフィールドにしておけば、調整できます。また、テストでは毎回落とすように1に設定したり、何も落とさないように0に設定したりできます。

どのパワーアップが落ちるかは、プレハブの配列からランダムなインデックスを選ぶ2回目の確率判定で決まります。intを使うRandom.Rangeは最大値を含まないため、Random.Range(0, array.Length)ならすべての要素を選べます。敵の戦利品の例:

public GameObject[] loot;
public float lootChance = 0.25f;

void DropLoot()
{
    if (Random.value >= lootChance) return;
    int pick = Random.Range(0, loot.Length);
    Instantiate(loot[pick], transform.position, Quaternion.identity);
}

パワーアップは毎フレーム自分自身を移動させて一定の速度で落下し、プレイエリアより下に来ると自分自身を破棄するため、取り逃したものが溜まりません。そのプレハブにはキネマティックRigidbodyとトリガーコライダーがあるので、物理エンジンはそれが動くことを認識し、パドルに到達したことを検知できます。

challenge icon

チャレンジ

難しい
  1. PowerUpにpublic float fallSpeed = 3fとpublic float bottomY = -9fを追加します。Update()では、1秒あたりfallSpeed単位で下方向に移動させ、y座標がbottomYより下になったらパワーアップを破棄します。
  2. GameManagerにpublic GameObject[] powerUps(シーンでWidePowerUpとMultiPowerUpのプレハブをリンクします)とpublic float dropChance = 0.15fを追加します。
  3. BrickBrokenでは、dropChanceの確率で、ブリックがあった場所にpowerUpsの中からランダムに1つ生成します。

今のところ、パワーアップはパドルをすり抜けて落ちます。次はキャッチできるようにします。

Playを押し、パワーアップが落ちるまでブリックを壊してから、Checkを押します。

自分で試してみよう

using UnityEngine;

public class PowerUp : MonoBehaviour
{
    // 最終章:壊れたブロックから落ちてくるパワーアップアイテム。
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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