Menu
CoddyTech

随机生成

本课属于 Coddy Unity 学习旅程的“Unity 脚本基础”单元。第 68 课,共 85 课。

Random.Range(min, max)会选出一个随机数,它可能返回的值取决于你提供的数字类型。对于浮点数,从min到max之间的任何值都有可能,包括两端。对于整数,不包括max本身。因此,掷骰子时要指定从 1 到 7:

int roll = Random.Range(1, 7);   // 1、2、3、4、5 或 6
Debug.Log("You rolled " + roll);

整数版本不包括max,这样Random.Range(0, names.Length)始终会得到有效的数组索引。这也意味着,即使你把结果存储在浮点数中,Random.Range(-5, 5)也只会得到从 -5 到 4 的整数。若要得到中间的任意值,请写Random.Range(-5f, 5f)。

对于 3D 中的位置和方向,Unity 提供了两个现成的随机向量。Random.insideUnitSphere是在以 (0, 0, 0) 为中心、半径为 1 的球体内部随机选取的一个点。Random.onUnitSphere是在球体表面随机选取的一个点,因此它是长度为 1 的随机方向。transform.position + Random.insideUnitSphere * 2f表示任意方向上距离最多为 2 个单位的位置,也包括上方和下方。

challenge icon

挑战

中等

每点击一次,箱子就会从地板上方的随机位置掉下来。

  1. 在点击事件的 if 中,选择 float x = Random.Range(-4f, 4f);,并用相同的方法设置 float z。
  2. 调用 Instantiate(cratePrefab, new Vector3(x, 5, z), Quaternion.identity);。

按下“开始”,然后点击几次:箱子会从新的位置掉下来。接着点击“检查”。

亲手试试

using UnityEngine;

public class CrateDropper : MonoBehaviour
{
    public GameObject cratePrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            // 从随机位置投下一个箱子:x 和 z 的范围是 -4 到 4,y = 5
        }
    }
}

Unity 脚本基础中的所有课

自己练习: Unity 在线编辑器