当前位置: 首页 > article >正文

unity学习36:老版的动画 Animation

目录

1 unity关于动画的分为两种

2 旧版动画  Animation

2.1 添加Animation组件

2.2 对应的动画clip

2.3 动画的属性

3 如何做出一个简单动画

3.1 打开老的动画编辑器

3.2 Animation 窗口,拖到下面的game窗口一起

3.3 新建动画

3.4 动画编辑器

3.4.1 时间单位秒

3.4.2  添加动画属性

3.5 关键帧里修改属性

3.6 第一个移动且缩放动画

3.7 添加关键帧

3.8 录制帧

3.9 点击动画文件本身,可以修改动画的播放方式 wrap mode

3.10 切换左下角的  简报dopesheet  / 曲线curves

4 代码控制动画

4.1 GetComponent ().Play()

4.2 对应代码

4.3 遇到报错和解决

4.3 实测OK的


1 unity关于动画的分为两种

  • 旧版,动画 :           Animation
  • 新版,动画(编辑)器:Animator

2 旧版动画  Animation

2.1 添加Animation组件

  • 新建一个gameObject,添加新的component

2.2 对应的动画clip

  • Animation 需要对应一个 Animation  clip  ,这个和 audio video都一样
  • Animations 展开,就是对应多个 动画组成的list

2.3 动画的属性

  • play Automatically       //是否自动播放
  • Animate Pyhsics        //动画的驱动方式,勾选后,则是物理
  • culling Type:
  1. always Animate
  2. based on renderers  //基于渲染才播放,看不到不渲染的时候不播放

3 如何做出一个简单动画

3.1 打开老的动画编辑器

3.2 Animation 窗口,拖到下面的game窗口一起

  • 打开的Animation 窗口
  • 拖到下面的game窗口一起

3.3 新建动画

  • 新建动画
  • 新建的动画,默认会在Asset 文件夹下,也会出现在 编辑器 project/Assets下

3.4 动画编辑器

3.4.1 时间单位秒

  • 上面有一个时间轴,
  • 上面是时间,单位秒 float
  • 比如 0.0 秒,0.5秒,1.00秒
  • 鼠标滚轮滚动,可以缩放时间轴

3.4.2  添加动画属性

3.5 关键帧里修改属性

  • 创建动画
  • 会自动生成2个关键帧。因为一个动画至少需要2个关键帧

  • 动画有很多帧,参见经典的电影帧数,1秒24帧。现在30-60也不算啥了
  • 但是做动画只能做少数帧,叫关键帧
  • 按住时间轴的竖白线,拖动到另外一个时间,设置第2个关键帧

3.6 第一个移动且缩放动画

3.7 添加关键帧

  • 添加关键帧
  • 可以控制动画变化,节奏等,自己悟吧
  • 如果删除,就是选中帧后delete 可删除

3.8 录制帧

  • 先点录制,
  • 然后,拖着关键帧的白线,到想创建新帧的地方
  • 然后这时候再拖动 关联动画的物体-cube,做你想做的变化
  • 就会自动产生关键帧
  • 也可以继续对关键帧的数值做修改

3.9 点击动画文件本身,可以修改动画的播放方式 wrap mode

wrap mode

  • once                  //只播放1次
  • loop                   //循环
  • clamp forever
  • ping pong           //来回循环

3.10 切换左下角的  简报dopesheet  / 曲线curves

  • 简报dopesheet
  • 曲线curves

4 代码控制动画

4.1 GetComponent<Animation>().Play()

  • //如果有个动画,默认播放当前的动画,我这实测不行
  • //GetComponent<Animation>().Play();

 

  • //方法也支持重载,直接指定某个动画名,OK的
  • GetComponent<Animation>().Play("change1");

4.2 对应代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestAnimation : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            //如果有个动画,默认播放当前的动画,我这实测不行
            //方法也支持重载,直接指定某个动画名,OK的
            GetComponent<Animation>().Play("change1");
            //GetComponent<Animation>().Play();
        }
        

    }
}

4.3 遇到报错和解决

  • 如果报这个错误
  • 动画clip需要至少挂载再 Animations 或者Animation里,二者之一

4.3 实测OK的


http://www.kler.cn/a/547385.html

相关文章:

  • Java Swing-5.jar 使用 jpackage 打包成 windows 可安装应用(exe,msi,免安装版exe)
  • typescript快速入门之常见类型
  • 双指针专题1:有效三角形的个数
  • 如何学习HBase:从入门到精通的完整指南
  • 编译RV1126SDK记录
  • SQL 注入漏洞原理以及修复方法
  • 【开源免费】基于Vue和SpringBoot的旅游管理系统(附论文)
  • 3DsMax快捷键
  • 在IDEA中误操作Git Rollback后的恢复方法
  • oppo,康冠科技25届春招内推
  • 更高效实用 vscode 的常用设置
  • 2025年02月14日Github流行趋势
  • 【kafka系列】At Most Once语义
  • LeetCode字符串相关算法题(1)【C语言版】
  • Matlab 多项式曲线拟合(三维)
  • 深度学习框架探秘|Keras 应用案例解析以及 Keras vs TensorFlow vs PyTorch
  • ML.NET库学习007:从SQL数据库中流式读取数据并进行预测分析
  • 协议-NVME
  • Office hour 2-自然语言处理
  • 144,【4】 buuctf web [极客大挑战 2020]Roamphp1-Welcome