Unity Blend Tree动画混合树使用入门教程

介绍

在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然。
这时候就需要动画混合树Blend Tree这个功能。使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能。

创建混合树

在Animator窗口的空白处右键,Create State > From New Blend Tree,然后双击Blend Tree进入混合树。笔者使用的是unity2019.4的版本,现在混合树有5种类型,可以在右侧展开Blend Type看到。

分别为:

  • 1D
  • 2D Simple Directional
  • 2D Freeform Directional
  • 2D Freeform Cartesian
  • Direct

1D

1D混合只有一个参数,比如如果使用混合树去制作人物从站立到走到跑的混合,就比较适合使用1D混合。右键点击混合树根节点,点击Add Motion添加结点,或者直接在右侧菜单点击加号来添加动画。

添加后

这里笔者添加了三个动画。

第一个是idle,站立不动,只有微弱的呼吸起伏

第二个是run

第三个是带着武器冲刺sprint的姿势

根据threshold的不同,可以产生出不同的融合动画效果
现在我们已知idle的threshold设定为0,run是0.5,sprint是1
参数是0到1,那我们就可以通过控制参数的大小来控制动画的播放。
比如,我们现在要取一个介于sprint和run中的动画,控制参数在0.5到1之间。
我们可以拖动上方的红线,预览融合后的动画。

现在红线的位置大约在0.75多一点的位置。

可以看到是介于上面图二和图三的某种动画


这幅图中倒数第二列,小表下面的1是控制动画的播放速度,最后一列小人下面勾选的话,表示动画镜像播放。
之后我们就可以使用Animator.SetFloat(“Blend”,float a)来播放你想要播放的动画。

2D

2D的三种融合方式,官方手册上是这么说的
官方文档关于2D融合树的描述:

2D Simple Directional:最好在运动表示不同方向(例如“向前走”、“向后退”、“向左走”和“向右走”或者“向上瞄准”、“向下瞄准”、“向左瞄准”和“向右瞄准”)时使用。根据需要可以包括位置 (0, 0) 处的单个运动,例如“空闲”或“瞄准”。在 Simple Directional 类型中,在同一方向上_不_应该有多个运动,例如“向前走”和“向前跑”。

2D Freeform Directional:运动表示不同方向时,也使用此混合类型,但是您可以在同一方向上有多个运动,例如“向前走”和“向前跑”。在 Freeform Directional 类型中,运动集应始终包括位置 (0, 0) 处的单个运动,例如“空闲”。

2D Freeform Cartesian:最好在运动不表示不同方向时使用。凭借 Freeform Cartesian,X 参数和 Y 参数可以表示不同概念,例如角速度和线速度。一个示例是诸如“向前走不转弯”、“向前跑不转弯”、“向前走右转”、“向前跑右转”之类的运动。

区别于1D融合树,2D的融合树参数变成两个。Pos X和Pos Y
红点表示参数当前的值,灰点托入动画会变成蓝点。当参数点红点离某个蓝点越近,动画就越趋向于表现此蓝点的值。
查阅了一些文章,还是没有彻底搞懂这三种融合方式的区别,但是就现在的了解程度来说:

当这个player进行前后左右移动四种动画,但是player本身的朝向并不改变的话,可以使用2D Simple Directional,将红点放置在(0,0),四个动画分别放在上下左右。通过获取Vertical和horizantol的值去改变pos Y和pos X的大小。

当这个player要进行相对复杂的运动,比如转身,左前倾,右前倾等等。可以使用2D Freeform Cartesian,即一个参数表示移动速度,一个参数表示转向这种感觉。

Direct

精确控制所混合的各种动画而不是只使用一个或两个参数来间接混合
比如人物从某一个表情到某一个表情的过渡动画,就由direct模式制作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity动画混合树实例详解

    本文实例为大家分享了Unity动画混合树实例代码,供大家参考,具体内容如下 先看效果 游戏动画中的一项常见任务是在两个或更多相似运动之间进行混合.也许最熟知的示例就是根据角色的速度来混合行走和奔跑动画.另一个示例是角色在奔跑期间转向时向左或向右倾斜. 使用方法: 1.右键单击 Animator Controller 窗口上的空白区域. 1.从显示的上下文菜单中,选择 Create State > From New Blend Tree. 1.双击混合树 (Blend Tree) 以进入混合树视图

  • Unity Blend Tree动画混合树使用入门教程

    介绍 在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然. 这时候就需要动画混合树Blend Tree这个功能.使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能. 创建混合树 在Animator窗口的空白处右键,Create State > From New Blend Tree,然后双击Blend Tree进入混合树.笔者使用的是unity2019.4的版本,现在

  • zTree插件下拉树使用入门教程

    最近,因为工作需要一个树形下拉框的组件,经过查资料一般有两种的实现方法.其一,就是使用zTree实现:其二,就是使用easyUI实现.因为公司的前端不是使用easyUI设计的,故这里我选择了zTree来实现下拉树. 这里使用简单的数据格式(即简单的Json格式)类似如下Json: var zNodes =[ {id:1, pId:0, name:"北京"}, {id:2, pId:0, name:"天津"}, {id:3, pId:0, name:"上海&

  • Flutter封装组动画混合动画AnimatedGroup示例详解

    目录 一.来源 二.AnimatedGroup使用示例: 三.AnimatedGroup源码 最后 一.来源 项目中遇到混合动画的情况,每次实现都需要生命一堆属性,让代码变得杂乱,难以维护. 参考 iOS 组动画 CAAimationGroup, 随花半天时间封装一个混合动画组件 AnimatedGroup. 此组件基于极简.高扩展.高适用的封装原则,基本满足当前项目开发. 二.AnimatedGroup使用示例: // // AnimatedGroupDemo.dart // flutter_

  • p5.js入门教程之小球动画示例代码

    一.运动的小球 本节将用p5.js做一个在屏幕上运动的小球. 思路是用变量记录小球的位置,然后在draw()函数里对其做出改变,由于draw()函数会不断地运行(频率为FPS,默认60帧/秒),所以小球便产生了运动. 代码如下: var x=0; function setup() { createCanvas(400, 400); } function draw() { background(220); //width和height是关键词,分别是Canvas的宽和高 x+=2; ellipse

  • Unity3D快速入门教程

    Unity3D游戏引擎介绍 Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎.使用Unity3D,开发者可以快速的开发出游戏.Unity3D引擎占据了游戏引擎市场45%的份额,居全球首位.因此,学习游戏开发,Unity3D的人才需求量最为庞大. Unity3D学习历程 俗话说,万事开头难.Unity3D的学习历程也是一样.学习Unity3D,大致分为以下

  • 手把手教会你使用redux的入门教程

    目录 Redux详解 Redux介绍 Redux有什么作用 如何在React中使用Redux 如何使用React-redux Redux详解 Redux介绍 Redux 是 JavaScript 应用的状态容器,提供可预测的状态管理. 在Redux中有3个原则 单一数据源 整个应用的State被储存在一棵 object tree 中,并且这个 object tree 只存在于唯一一个Stroe中. State 是只读的 唯一改变State 的方法就是触发Actions,Actions是一个用于描

  • Python中强大的命令行库click入门教程

    前言 我们的游戏资源处理工具是Python实现的,功能包括csv解析,UI材质处理,动画资源解析.批处理,Androd&iOS自动打包等功能.该项目是由其他部门继承过来的,由于绝大部分代码不符合我们的业务需求,所以进行了大重构.删除了所有业务代码,仅保留了python代码框架.项目中命令行参数解析是自己实现的,极其不优雅,也忍了这么久.打算找时间用click重写.所以最近学习了click,下面本文的内容是click的入门教程,初学者们可以来一起学习学习. 官网镜像地址: http://click

  • THREE.JS入门教程(1)THREE.JS使用前了解

    Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏,爱好者学习基本要通过Demo源码和Three.js本身的源码来学习. 国外网站 aerotwist.com 有六篇较为简单的入门教程,我尝试着将其翻译过来,与大家分享. 我在一些实验项目中使用了Three.js,我发现它对快速上手浏览器3D编程确实很有帮助.通过Three.js,你不仅可以创建相机.物体.光线.材质等等,还可以选择

  • Three.js快速入门教程

    引言 本文主要是讲解Three.js的相关概念,帮助读者对Three.js以及相关知识形成比较完整的理解. 近年来web得到了快速的发展.随着HTML5的普及,网页的表现能力越来越强大.网页上已经可以做出很多复杂的动画,精美的效果. 但是,人总是贪的.那么,在此之上还能做什么呢?其中一种就是通过WebGL在网页中绘制高性能的3D图形. OpenGL,WebGL到Three.js OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于OpenGL设计的面向web的图形标准,

随机推荐