动画系统:
旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动)
1、添加Animation,添加到父物体上
2、添加动画片段
3、添加关键帧(子物体的坐标是相对于父物体的坐标),帧之间插值移动,关键帧可以复制粘贴
关键帧的插值曲线

改成线性插值,右键打开选项,Both Tangents选择Linear

采样率(Samples):调节动画快慢,调小变慢

添加事件:
1、事件必须和Animation同级
2、选中游戏物体来编辑事件,不可以对动画片段编辑事件
3、事件会自动加载给资源里的片段,另一个物体复用时,如果该物体没有事件脚本,就会报错
(旧动画系统,片段也可以复用,要和录制片段的游戏物体的名称相同)
不推荐在动画状态机上添加事件
推荐使用代码,从列表里面获得片段,创建事件对象,通过Clip手动添加事件,运行中动态添加事件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour {
Animation ani;
private void Awake()
{
ani = GetComponent<Animation>();
//ani.clip
// K帧、K动画
AnimationState testState = ani["test"];
AnimationClip testClip = testState.clip;
AnimationEvent testEvent = new AnimationEvent();
testEvent.functionName = "EventTest";
testEvent.time = 0.3f;
testEvent.messageOptions = SendMessageOptions.DontRequireReceiver; // 设置 如果没有接收者也不会报错
testClip.AddEvent(testEvent);
}
void Start () { } void Update () { }
public void EventTest()
{
}
}
片段封装在AnimationState类中

通过封装的对象获得Clip,AnimationClip的事件

AnimationEvent也是封装类,事件密闭类

消息设置
1、不需要接受者:有接受者正常执行,没有接受者也不会报错
2、必须要有接受者(默认):在动画控制器里也是默认的,所以要用代码修改
通过身上的脚本组件接收消息

Rig骨骼标签设置:
Legacy:模型使用旧动画系统,会默认为模型添加Animation
Genenal:通用骨骼,Legacy骨骼都可以改成Genenal
Humanoid:模型的骨骼要符合人形的骨骼
黄色感叹号建议修改后使用,打勾可用,打叉不可用

 
新动画系统(骨骼动画系统,骨骼运动驱动)
1、代码量少,效率稍高
2、状态机,可视化编辑

状态机里单个片段的速度,默认不可修改

可以使用参数修改单个片段的速度,添加IdleSpeed,修改单个片段的参数

参数和Speed是相乘的关系,Speed * IdleSpeed

ani.speed则是设置所有动画的速度

镜像

整个播放时长

Has Exit Time:默认的过渡条件

播放到81%才会过渡到下一动画

融合的时间长度0.25秒,改成0,则无融合

Fixed Duration:固定过渡,在0.25秒内,动画是不允许被打断的

设置过渡条件,速度大于小于0.1

用子状态机盒子封装3个运动状态

返回子状态机上一层

方法一:设置连线到Move状态机本身

方法二:设置连线到Move状态机的Run状态

设置连线到Base Layer上一层的Idle状态

查看连线的状态,选择对应的连线,可以设置对应的过渡条件

过渡条件:并且的关系

过渡条件:或者的关系,设置两条连线,一条添加速度,一条添加转向

复杂的连线 -> 融合树
1D融合树,由1个参数控制

蓝色的三角:动画的权重过渡,两个三角形的交点各占50%相互融合

2D的融合树:需要2个参数控制

第1个参数:x轴
第2个参数:y轴

通过拖动方块,设置片段在坐标系的位置,可以设置片段的速度和轴值
红点:代表参数的集合
圆圈:代表有那几个动画参与融合

修改数字,微调数据

2D简单方向:1个方向只有1个节点(片段)

2D的自由方向和2D的笛卡尔坐标系:1个方向只有多个节点(片段),可以由多个节点融合

Direct(很少用):通过多个参数控制人物的表情,多个参数控制一个状态

新动画系统 - 动画的重定向:
不同的模型,可以使用同一动画片段,只要模型是类人性的
有模型无动画,模型和动画文分开

新动画系统自动生成Avatar骨骼配置文件
骨骼节点的映射
实心圆圈骨骼必须有
虚线圆圈骨骼可以无

下载动作片段的网站:https://www.mixamo.com/
1、需要注册
2、传模型到网站,可以预览模型的动作
动画文件的设置(难点):查询动作参数的说明,自己操作学习

Unity3D学习笔记(十八):动画内容补充的更多相关文章

  1. python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置

    python3.4学习笔记(十八) pycharm 安装使用.注册码.显示行号和字体大小等常用设置Download JetBrains Python IDE :: PyCharmhttp://www. ...

  2. (C/C++学习笔记) 十八. 继承和多态

    十八. 继承和多态 ● 继承的概念 继承(inheritance): 以旧类为基础创建新类, 新类包含了旧类的数据成员和成员函数(除了构造函数和析构函数), 并且可以派生类中定义新成员. 形式: cl ...

  3. python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制

    django  Pagination(分页) django 自带的分页功能非常强大,我们来看一个简单的练习示例: #导入Paginator>>> from django.core.p ...

  4. SharpGL学习笔记(十八) 解析3ds模型并显示

    笔者设想的3D仿真中的元件,是不可能都是“画”出来的.这样就玩复杂了,应该把任务分包出去,让善于制作模型的软件来制作三维模型,我们只需要解析并且显示它即可. 3dsmax制作三维模型的方便,快捷,专业 ...

  5. Java基础学习笔记十八 异常处理

    什么是异常?Java代码在运行时期发生的问题就是异常. 在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息(如异常出现的位置.原因等). 异常的继承体系 在 ...

  6. Unity3D学习笔记(八):四元素和书籍推荐

    书籍推荐: 3D数学基础:图形与游戏开发——游戏软件开发专家系列(美)邓恩 Unity Shader入门精要 冯乐乐(92年) 数据结构(Python语言描述) 数据结构.算法与应用(C++语言描述) ...

  7. MYSQL进阶学习笔记十八:MySQL备份和还原!(视频序号:进阶_37)

    知识点十九:MySQL的备份的还原(38) 一.mysql的备份 1.通过使用mysqldump的命令备份 使用mysqldump命令备份,mysqldump命令将数据库中的数据备份成一个文本文件.表 ...

  8. Object-c学习笔记十八-----NSPredicate

    Cocoa提供了一个类NSPredicate类,该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配.谓词表示计算真值或假值的函数. NSPre ...

  9. Salesforce LWC学习(二十八) 复制内容到系统剪贴板(clipboard)

    本篇参考: https://developer.mozilla.org/zh-CN/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipb ...

  10. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)

    1.事件冒泡与事件捕获 2.事件与事件句柄   3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处:     1.每个函 ...

随机推荐

  1. 【Python-虫师】自动化测试模型--参数化

    一.自动化测试代码最开始是线性的,后续发展为模块化代码,所以涉及到了函数和方法的引用. 1. 函数和方法的最主要区别: Python的方法中定义函数的时候,函数中必须写self.而单独定义函数的时候则 ...

  2. (4.15)存储DAS,NAS,SAN在数据库存储上的应用

    关键词:存储,硬盘接口类型,磁盘类型,网络类型,DAS,DNS,SAN 转自:http://blog.51cto.com/qianzhang/1254617 一. 硬盘接口类型 1. 并行接口还是串行 ...

  3. [LeetCode] 112. Path Sum_Easy tag: DFS

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  4. java和python中的string和int数据类型的转换

    未经允许,禁止转载!!! 在平时写代码的时候经常会用到string和int数据类型的转换 由于java和python在string和int数据类型转换的时候是不一样的 下面总结了java和python ...

  5. 常用软件安装及VS插件工具

    常用开发工具安装 开发环境 Visual Studio 2013 Microsoft SQL Server 2008 源代码管理 Git TortoiseGit GitScc Provider Cru ...

  6. 面经:Google两轮背靠背

    如题,谷歌两轮背靠背电面.两轮都是废话不多说直奔coding,虽然第一轮的中国大哥还是花了一点点时间了解了一下我的背景.毕业时间.research方向.说好的research面呢? 中国大哥出的题: ...

  7. javascript函数定义以及常见用法

                  我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头函数,Class类写法,高阶函数,函数节流/函数防抖,下面我就 ...

  8. map() 方法

    1. 方法概述 map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组. 2. 例子 2.1 在字符串中使用map 在一个 String 上使用 map 方法获取字符串中每 ...

  9. jq 自定义标注小组件 $.widget

    html 部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  10. Linux基础命令---zip

    zip zip是一种最通用的文件压缩方式,使用于unix.msdos.windows.OS等系统.如果在编译zip时包含bzip 2库,zip现在也支持bzip 2压缩.当将大于4GB的文件添加到存档 ...