动画系统:
旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动)
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. android ImageView加圆角

    1.attrs添加 <declare-styleable name="RoundImageView"> <attr name="circle" ...

  2. Python中的__init__.py的作用

    当用 import 导入该目录时,会执行 __init__.py 里面的代码 因此在__init__.py文件中,把深层的包的路径缩短,别的地方就可以在引用到目录级别时引到深层的包.

  3. JavaScrip总体

    js: 简单对象: 数字 | 字符串 | 这三个像对象,有方法,但不可变 布尔值 | null undefined 对象:无类型,k-v对集合:函数.数组.REG.... JavaScript是一种l ...

  4. [LeetCode] 1. Two Sum_Easy tag: Hash Table

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  5. boost--序列化库serialization

    序列化可以把对象转化成一个字节流存储或者传输,在需要时再回复成与原始状态一致的等价对象.C++标准没有定义这个功能.boost.serialization以库的形式提供了这个功能,非常强大,可以序列化 ...

  6. Microsoft Interview第一轮

    上来随意交谈了一小会儿,开了点小玩笑,chat了一些关于他们recruter行程的话题,缓和了一下气氛. 进入正题,问了做的research的方向,我说是DLT,然后大概给他讲解了一下具体是什么, 跟 ...

  7. 登陆跳板机每天只输入一次token的方法——ssh clone session

    自从跳板机升级后,无所不在的token让小PE很是恼火,于是有了这篇文章@_@ Linux or Mac篇 在Fedora或者Mac下很简单,修改~/.ssh/config文件,没有的话,就新建一个( ...

  8. Python Socket编程基础篇

    Socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  9. FastReport问题整理(转)

    FastReport问题整理 博客分类: 软件开发   部分来自网上,部分来自网友,部分来自Demo如果有新的内容,会不断更新.. 更新历史: 2009-02-27 加入套打方案全攻略(原:jinzh ...

  10. tablix“Tablix1”有一个具有内部成员的详细信息成员

    做报表的时候出现了这个错误: 错误 1 tablix“Tablix1”有一个具有内部成员的详细信息成员.详细信息成员只能包含静态内部成员.  解决方案: 原因:在一个报表里面插入两个表格的时候:会出现 ...