孙广东 2015.1.3
关于Unity游戏运行中的 随机数:
Unity/Editor/Data/Documentation/en/Manual/RandomNumbers.html
添加随机游戏元素
在许多游戏中,随机选择的items或values是很重要的。本节展示了如何使用Unity的内置随机函数来实现一些常见的游戏机制。
选择一个随机Item游戏元素从数组中:
在随机选择一个数组元素时,可以选择一个零和数组的最大值(这是等于数组的长度减去 1 )的随机整数。这是很容易使用内置的随机函数:—
var element = myArray[Random.Range(0, myArray.Length)];
注意,Random.Range 从一个范围(包括第一个参数但不包括第二)返回一个值,所以使用 myArray.Length。在这里能给出正确的结果。
选择不同概率的Items:
有时,你需要选择随机的物品,但有些物品更容易被选上。例如,NPC可能会反应在几个不同的方式,当它遇到一个玩家:
50% 友好的问候的机会
25% 逃跑的机会
20% 直接攻击的机会
5% 提供金钱作为礼物的机会
你能想象这些不同的结果作为一条纸分成几部分分别占总长度的一小部分的条。所占比例等于被选择的结果的概率。作出选择是相当于挑选一个随机点沿带状的长度(例如投掷一个飞镖),然后看到它是在。
在脚本中,该文件条实际上是一个float 的数组,该数组中包含的Item的不同的概率。随机点则是由float数组总大小乘以 Random.value 值来获得(他们不需要总计达1;重要的是不同的值和 相对大小)。为了找出随机点元素落在哪个点数组,首先检查看它是否是小于第一个元素的值。如果是的话,那么第一个元素将被选择。否则,从数组中减去第一个元素的值,比较第二个元素,直到找到正确的元素。类似于下面这个代码:
//C#
float Choose (float[] probs) {
float total = 0;
foreach (float elem in probs) {
total += elem;
}
float randomPoint = Random.value * total;
for (int i= 0; i < probs.Length; i&#