Unity3D学习笔记(十八):动画内容补充

动画系统:
旧动画系统(帧动画系统:关键帧驱动,关键帧记录的数据进行插值移动)
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、传模型到网站,可以预览模型的动作
动画文件的设置(难点):查询动作参数的说明,自己操作学习

 

posted @ 2019-02-11 22:04  vuciao  阅读(703)  评论(0编辑  收藏  举报