第八十九讲 Mecanim随机群体动画.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八十九讲 Mecanim随机群体动画 在本节中看一个群组动画的效果,在此群组动画中每个角色都使用了相同的动画控制器,在动画控制器的控制脚本中使用了随机功能,这样使每个角色都有不同的行为参数从而产生了每个角色都有不同行为逻辑的效果。 在通过实例化操作之后形成了群组的效果,接下来就看下如何创建这种效果。 首先在创建角色的效果中 为其添加添加一个动画控制器,如图所示此处可以添加一个跑跳的行为控制器。 为此角色添加脚本从而使角色具有相同的动画控制器,但具有不同的行为效果。 为角色创建使功能随机的脚本如图所示: 将脚本命名为RandBehavior然后双击脚本。 双击此脚本,在属性编辑器中打开。 首先定义一个Animator的变量,取对Animator的引用。 定义两个时间阻尼变量,对于此阻尼变量可以设置此初始值。 在Start语句中获取对Animator组件的引用,此处可使???GetComponentAimatior()来获取。 在Update中行为逻辑的控制也就是对于动画状态机的动画状态的过渡控制,一般的都是通过判断动画参数的变化来引起动画状态切换。 If语句检测Animator组件是否存在,因为我们所有的逻辑都是为角色动画来创建逻辑。 Rand:用于接收产生的随机数,此处定义的随机数的范围是从0到50。 在动画控制器中两个布尔参数,在角色的动画控制器中可以看到角色有两个动画状态。 在脚本中使用布尔函数来控制布尔类型的动画参数成立条件,就可以使用随机数的功能来控制两个参数的成立条件。此处的成立的条件是当我们随机数等于20时才可以设置角色进行纵越状态,其他的同理。 在上节中使角色更随着另一个角色也就是为角色指定了一个目标物体,当目标物体运动时我们的角色也会跟着一起运动,其中就使用了一个判断条件,使用角色与其目标物之间距离进行判断。 If判断语句: 角色中跟骨骼的位置与我们此处指定的,目标位置变量成为全剧变量。此处使用了一个判断语句如果我们的角色与指定的目标位置之间距离大于50就会使角色跑动起来。 要使其跑动起来就需要使用Animator中的浮点函数Speed参数值为1指定阻尼的时间等等,这样就可以是角色跑动起来。 同理如果角色与目标位置之间的距离不大于5的情况下,就不需要角色在进行跑动。此时可以使用一个else语句,同样设置浮点函数此时设置动画参数的数值为0这样我们就可以控制角色跑的状态了。 在角色跑的状态中控制角色跑的方向,此处还要使用与上节类似的算法。使用点乘叉乘的方式来判断角色与目标位置的关系。 首先定义角色的当前方向,以及与目标物体通过点乘来计算目标位置与方位之间的关系,分为两种情况,第一个是目标位置正前方,另一种是目标位置在角色的后方,此时通过控制方向参数使用这样的逻辑就可以控制角色跑的方向。 对TargetPosition进行处理,使角色的目标不停的发生变化。在进行随机化处理时就可以使角色的目标位置不断的发生变化。 此时又使用了一个If语句判断角色的速度小于0.01这也就相当于角色停止跑的状态也就是进入了空闲状态时。 首先可以为角色指定此脚本,在一个角色的情况下单击播放按钮,看下角色的行为状态。 单击播放后会看到角色不停的进行运动,接下来可以把此角色实例化。在同一个角色中可以实例出多个角色,而每个角色有具有行为。 如上文同样创建一个C#脚本, 在此脚本中使用简单的instance语句进行实例化操作。 在此脚本中定义了两个类型为GameObject的变量用于引用将要实例化的物体。 在更新语句中设置了实例化角色的数量,使其不超过30个,然后使用instance语句来对引用的游戏物体进行实例化操作,其间也控制了实例化操作的时间。 保存此脚本回到Unity中对于instance脚本我们可以把其赋值给场景中的公共物体例如摄像机或者是灯光物体等等,此处我们将其赋值个摄像机拖动到摄像机的属性编辑器中 然后拖动角色到预设A中,如图所示: 点击播放进行预览可以看到在进行实例化操作之后场景中产生了大量的角色,注意运行效率的考虑要控制场景中的数量另外也可以在角色中使用简单的模型。

文档评论(0)

麻将 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档