掉落物
Coddy Unity 游戏:打砖块 课程的第 14 课,共 19 课。
砖块被打碎时,有时会掉落一个朝挡板落下的道具。是否掉落由一次随机判定决定:Random.value 是一个从 0 到 1 的随机浮点数,因此 Random.value < 0.15f 大约每 100 次会有 15 次为 true。把掉落概率保存在字段中,便于调整,也可以在测试时将它设为 1,让道具每次都掉落;或设为 0,让道具完全不掉落。
掉落哪种道具由第二次随机判定决定:随机选取数组中的一个预制体索引。使用整数时,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 和一个触发器碰撞体,因此物理系统知道它在移动,并且它能够检测到自己何时碰到挡板。
挑战
困难砖块被打碎时,有时会掉落一个强化道具。
- 在
PowerUp中,添加fallSpeed = 3f和bottomY = -9f;在Update()中,让它每秒以 fallSpeed 的速度下落,并在低于 bottomY 时销毁。 - 在
GameManager中,添加public GameObject[] powerUps;和public float dropChance = 0.15f; - 在 BrickBroken 中,如果
Random.value < dropChance,就在砖块所在位置实例化powerUps[Random.Range(0, powerUps.Length)]。
按下“开始”并打碎砖块:偶尔会掉落一个强化道具(接下来再让你接住它)。然后点击“检查”。
亲手试试
using UnityEngine;
public class PowerUp : MonoBehaviour
{
// 最后一章:从打碎的砖块中掉落的强化道具。
}
Unity 游戏:打砖块中的所有课
自己练习: Unity 在线编辑器