通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不能直接简单地用Translation连起来了,而应该使用动画融合树。

准备工作:一个人物模型,一个待机动画,一个行走动画,一个奔跑动画。

通常游戏中,我们人物从待机到跑直接切换就行,今天我们加一个行走的过渡效果吧。
创建一个动画控制器AnimatorController,将人物的Animator组件的Controller属性指向我们刚才创建的AnimatorController。
在AnimatorController中添加一个空状态Idel,然后设置动画片断为我们的待机动画。
然后再创建一个动画融合树WalToRun:

双击融合树进入编辑状态,在右侧的Inspector面板中的Motion列表中添加两个元素,从上到下依次选择我们的行走动画和奔跑动画。
创建float类型动画参数Run,将融合树的Parameter参数设置为Run:

最后,将待机状态Idel使用Translation连接到融合树,设置Condition参数为 Run Greater 0.1,反过来融合树到Idel的连接Condition设置为 Run Less 0.1。

一切就绪,在Player身上添加脚本DearMove:

 using UnityEngine;
using System.Collections; public class DearMove : MonoBehaviour
{
private Animator anim; //动画状态机
private int RunFloat; //Run参数ID
private float vertical; //前进 void Awake ()
{
anim = gameObject.GetComponent<Animator>();
RunFloat = Animator.StringToHash("Run");
} void Update ()
{
//呼叫方向控制
vertical = Input.GetAxis("Vertical");
//根据前进控制,设置Run参数的值,
//后面两个参数可不加,这里是为了让从走到跑看得更明显
anim.SetFloat(RunFloat, vertical, 1f, Time.deltaTime);
}
}

运行游戏,按住 W 键,可以看到Player从走慢慢过渡到跑咯!

AnimatorController动画融合树的更多相关文章

  1. BleedTree动画混合树

    通过Unity动画状态机,能帮我们轻松处理转换各个动画片断,达到想要的效果,但是如果仅仅是一个个动画的硬生生的切换,那么看起来就非常突然,而不真实了,在质量要求比较高的游戏中,特别是动作游戏,我们就不 ...

  2. AnimatorController动画遮罩

    游戏中,我们的人物在某些时候,可能在一个时间点在做两件事,这样就需要同时播放两个动画,但我们肯定不能简单将其叠加,比如移动着开枪.攻击.挥手等等,那么在Unity中我们应该怎样实现这样的功能呢?且听我 ...

  3. spine动画融合与动画叠加

    spine动画融合与动画叠加 一.动画融合setMix 1.概述:两个动作之间的平滑过渡 参数duration为需要多少时间从fromAnimation过渡到toAnimation,过渡时间为动画重叠 ...

  4. jQuery animate方法开发极客标签Logo动画融合效果

    在线演示 本地下载 jQuery的animate方法基础使用,演示如何生成一个jQuery animate方法开发极客标签Logo动画融合效果 相关代码录播:jQuery animate方法开发极客标 ...

  5. Unity---动画系统学习(6)---Avatar Mask动画融合、Layers动画分层、IK反向动力学

    1. 介绍 Avatar Mask(动画融合) 前面我们一直介绍的都是动画混合,一般用于解决边跑边转弯的问题.而动画融合一般用于解决例如边跑边挥手的问题. 简单说就是让跑步去控制腿的骨骼,挥手控制手的 ...

  6. Spine学习五- spine动画融合

    在许多地方,都需要用到动画融合,unity的新版动画系统已经能够很方便的进行动画融合,那么使用spine的动画状态机的情况下,如何来进行动画融合呢? 官方有两种方案,一种是使用混合动作实现,另一种是使 ...

  7. BleedTree动画混合树[Unity]

    Unity在中土大陆的大肆推广能从广泛的中文翻译资料中看出.所以,手册才是王道. 游戏动画中的一个常见任务是在两个或更多相似运动之间混合.最佳的已知示例可能是根据角色速度混合行走和奔跑动画.另一个示例 ...

  8. Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)

    认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什 ...

  9. unity 对Animator动画系统的研究

    unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看 ...

随机推荐

  1. vultr新用户注册享受50美元优惠码,长期有效

    vultr vps服务器,我用了三年多,购买了几十台vps,性价比非常高. 近期,vutlr推出了最新优惠码DOMORE长期有效,新用户注册账号时候,可在付款方式界面输入这个优惠码,享受50美元余额, ...

  2. ACM沈化校赛

    答对两道题,因为比赛经验原因明明可以对四道,在这两道题又浪费过多时间,成绩不理想,但也是累积了一下经验.

  3. SystemInfo获取设备系统参数

    using UnityEngine; using System.Collections; using System.Collections.Generic; publicclassGameContro ...

  4. ZendStudio9之SVN项目代码提示丢失解决

    前几天转移服务器,SVN 也重建了个,但用着重建的项目发现代码提示丢失了...好郁闷..搞了半天终于找到解决的方法了! 如果你还保留有以前的 SVN 项目本地完整备份,可以直接拷贝以下三个文件到新项目 ...

  5. [HMLY]3.如何使用Xcode Targets管理开发和生产版本?

    本文原地址:http://www.appcoda.com/using-xcode-targets/ 在开始此教程之前,我们假设你已经完成了应用程序的开发和测试,现在准备提交生产发布.问题是,某些web ...

  6. 花点时间搞清top、clientTop、scrollTop、offsetTop

    [转贴]花点时间搞清top.clientTop.scrollTop.offsetTop   scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前 ...

  7. 《Intel汇编第5版》 数组求和

    一.LOOP指令 二.间接寻址 三.汇编数组求和 INCLUDE Irvine32.inc includelib Irvine32.lib includelib kernel32.lib includ ...

  8. python(序列递归)【输出原子级别元素。。。】

    晚上回去复习下原来的资料,返现Codebook中有个关于“展开一个嵌套序列”的话题. 任务说明:序列中的子项可能是序列,子序列的子项仍可能是序列,以此类推,则序列嵌套可以达到任意的深度.需要循环遍历一 ...

  9. 关于mongodb的一些笔记

    1.以服务的形式安装mongodb dos -- 进入到mongodb的bin目录下,执行 D:\mongodb\bin>mongod --logpath D:\mongodb\logs\mon ...

  10. JS replace可以接受回调函数

    这是js最鲜为人知的秘密之一,v 1.3首次引入.大部分情况下repalce的使用情况如下: '10 12 13 40 50'.replace(/\d+/g,'*');//用 * 替换所有的数字 这是 ...