前言
随机选取项目或值在很多游戏中非常重要。该部分说明如何使用 Unity 内置随机函数执行一些常见的游戏机制。
一、从数组选择随机项目
可随机挑选数组元素:
1.是因为能够选择零到数组最大索引值(等于数组长度减去一)之间的随机整数。
2.使用内置 Random.Range 函数就可轻松做到:
var element = myArray[Random.Range(0, myArray.Length)];
请注意:Random.Range 从包含第一个参数但排除第二个参数的范围中返回一个值,所以在此处使用 myArray.Length 能给出正确结果。
二、用不同概率选择项目
1.概率:
有时候,您需要随机选择项目,但有些项目被选中的概率比其他项目大。
例如,NPC 在遇到玩家时会以几种不同的方式作出反应:-
50% 的机率会友好问候
25% 的机率会跑开
20% 的机率会立即攻击
5% 的机率会提供 金钱作为礼物
您可以想象这些不同的结果分布在分成几部分的条形纸上,每种结果占总长度的一部分。
所占部分与选中结果的概率相等。做选择就是选取条形纸长度上的随机点(比如说扔飞镖),然后看看它落在哪个部分。
1.在脚本中,条形纸实际上是一个浮点数组,按顺序包含项目的不同概率。随机点由 Random.value 乘以数组中所有浮点总数得出(它们合计起来不一定等于 1;重点是不同值获得的相对大小)。
2.要找出随机点“落在”哪个数组元素,首先检查看它是否小于第一个元素的值。如果是,则将选中第一个元素。否则,从点值减去第一个元素的值,再与第二个元素比较,直到找到正确的元素。类似于下面这个代码:-
function Choose(probs:float[]) {
var total = 0;
for (elem in probs) {
total += elem;