Unity学习笔记3:随机数和动画脚本

本文介绍了Unity中随机数的多种应用场景,包括数组随机取值、概率分布随机数、列表洗牌以及空间随机点生成。此外,还详细讲解了动画脚本的融合、混合以及重采样和帧率问题,包括Animation Blending的权重控制和Animation Mixing的实现,并提供了处理帧率变化导致的问题的方法。
摘要由CSDN通过智能技术生成

Random的几个典型应用介绍如下。

1.随机数的获取:Random.Range(0,array.Length);在0到array.Length-1之间随机取一个数。在数组(比如说,物品数组)myArray中随机取一个数(随机取一件物品):

var index = Random.Range(0, myArray.Length);
myArray[index];


2.不同概率随机数的获取:

function Choose(probs: float[]) {
     var total = 0;
     for (elem in probs) {
          total += elem;
     }
     var randomPoint = Random.value * total;
     for (i = 0; i < probs.Length; i++) {
          if (randomPoint < probs[i])
               return i;
          else
               randomPoint -= probs[i];
     }
     return probs.Length - 1;
}

其中probs是各elem取得的概率,total是它们相加的总和(可以不为1),Random.value随机获取一个概率数,最后一个return是防止randomPoint=total(等于1)的情况,第二个for循环无法为此时的randomPoint找到一个匹配值。

Shffling a List——随机出一个列表,比如洗牌。方法是把牌堆里的每张牌按序和一张随机位置的牌交换顺序:

function Shuffle(deck: int[]) {
     for (i = 0; i < deck.Length; i++) {
          var temp = deck[i];
          var randomIndex = Random.Range(0, deck.Length);
          deck[i] = deck[randomIndex];
          deck[randomIndex] = temp;
     }
}


3.无重复的选择一组随机物品集合:有很多应用场合,比如无重复选择一组NPC的出生地点,假设有10个出生点,5个NPC,于是要求随机从10个出生点筛选出5个无重复的出生点,第一个被选出的地点概率为5/10,第二个为4/9,依次类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值