动画系统:
旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动)
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. Iterator源码解读

    //继承关系 public interface Inteator { boolean hasNext(); Object next(); } public interface Iterable { I ...

  2. [vue]组件最佳实战

    [vue]全局组件和局部组件(嵌套+props引用父组件数据) [vue]组件篇 [vue]组件的创建(componet)和销毁(keep-alive缓存)和父子dom同步nextTick [vue] ...

  3. PAT 1026 Table Tennis[比较难]

    1026 Table Tennis (30)(30 分) A table tennis club has N tables available to the public. The tables ar ...

  4. [LeetCode] 243. Shortest Word Distance_Easy

    Given a list of words and two words word1 and word2, return the shortest distance between these two ...

  5. sqlplus与shell互相传值的几种情况

    2578人阅读   sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/orac ...

  6. SpringMyBatisDay01

    1.Spring简介 Spring是一个开源轻量级应用开发框架,其目的是用于简化企业级应用程序的开发,降低侵入性Spring提供IOC和AOP功能,可以将组件(就是类)之间的耦合度降至最低,解耦,便于 ...

  7. c++实现web服务框架

    lamada表达式 声明一个返回数组指针的函数            返回指针数组的函数形式如下所示:    括号必须存在 注意->后不能加() Lambda表达式  

  8. linux命令:帮助命令

    帮助命令:man 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信息 范例:$man l ...

  9. 多项式函数插值:多项式形式函数求值的Horner嵌套算法

    设代数式序列 $q_1(t), q_2(t), ..., q_{n-1}(t)$ ,由它们生成的多项式形式的表达式(不一定是多项式): $$p(t)=x_1+x_2q_1(t)+...x_nq_1(t ...

  10. Summary: Lowest Common Ancestor in a Binary Tree & Shortest Path In a Binary Tree

    转自:Pavel's Blog Now let's say we want to find the LCA for nodes 4 and 9, we will need to traverse th ...