首页 > 编程知识 正文

c++入门教程,计算机c语言基础知识

时间:2023-05-05 14:53:17 阅读:107255 作者:682

在unity 3d动画系统中,avatar可能希望在一台状态机上随机循环播放子状态机动画,并控制每个子状态机出现的概率。 本文介绍了如何使用c#实现概率随机数生成算法。

问题说明: unity 3d的动画控制器在状态机中驱动avatar动画。 状态机可以存在该子状态机,以统一管理分类后的操作。 首先对动作进行分类,将每个类别定义为顶级状态,然后将相应的状态作为子状态读取。

以下示例定义IDLE、TALK和ACT三种顶级状态:

每个顶级状态都有几个子状态。

此时,希望在子状态下以一定的概率随机再生。 例如,如果avatar处于Idle状态,70%的人可能会播放“呼吸”,20%的人可能会播放“休息”,8%的人可能会播放“弯腰”,2%的人可能会播放“挺直腰”。 在这种情况下,需要将parameter作为索引添加,以驱动各种子状态的播放2 .实现概率播放

解决方案:定义生成的随机数int型参数rand; randomList是存储各状态概率的列表; I是randomList中元素的索引。 算法实现的代码如下所示。

intrand=random.range(0,randomList.Sum ) ); int currProb=0; for(intI=0; i randomList.Length; I ) {currProb =randomList[i]; 随机处理器(if ) Animator.setinteger(parameter,I ); 返回; }生成随机数rand后,遍历randomList,如果rand落入该区间,将值指定给parameter,驱动avatar播放与I对应的动画。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。