zoukankan      html  css  js  c++  java
  • 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、传模型到网站,可以预览模型的动作
    动画文件的设置(难点):查询动作参数的说明,自己操作学习
  • 相关阅读:
    #575. 「LibreOJ NOI Round #2」不等关系
    P4494 [HAOI2018]反色游戏
    P6378 [PA2010] Riddle
    子集卷积
    躯壳
    C++11、14、17里的lambda表达式简介
    数据结构与算法复习——7、斐波那契堆和配对堆
    数据结构与算法复习——6、二项队列及其分析
    数据结构与算法复习——5、摊还分析入门
    高等代数(二)预习——4、唯一因式分解定理
  • 原文地址:https://www.cnblogs.com/vuciao/p/10363338.html
Copyright © 2011-2022 走看看