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

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的

相关文章:

  • pytorch训练五子棋ai
  • Azure上基于OpenAI GPT-4模型验证行政区域数据的设计方案
  • deepSeek本地部署,详细教程,Ollama安装
  • 机器学习入门-读书摘要
  • 数据结构 树的存储和遍历
  • 一口气入门前端——HTML5入门
  • 内网穿透简单使用
  • QEMU参数与使用
  • nginx播放视频(auth_request鉴权)
  • 人工智能行为识别之slowfast源码解读
  • Linux Mem -- MTE in AArch64 Linux
  • 树莓集团全国拓展:产业园服务与人才培养的协同发展
  • 【开源项目】数字孪生武汉~超经典智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码
  • DeepSeek操作Excel,实现图表自动化生成
  • 实用教程:用微服务搭建你的2025项目
  • HDFS应用-后端存储cephfs-文件存储和对象存储数据双向迁移
  • Node.js NativeAddon 构建工具:node-gyp 安装与配置完全指南
  • uni-app中常用的指令语句有哪些?
  • 获取 Windows 视频时长的正确方式——Windows Shell API 深度解析
  • vscode C/C++ CMake 调试
  • 加快推进科技服务业高质量发展,九部门联合发文
  • 柬埔寨果农:期待柬埔寨榴莲走进中国市场
  • 见微知沪|科学既要勇攀高峰,又要放低身段
  • 精品消费“精”在哪?多在体验上下功夫
  • 俄乌代表团抵达谈判会场
  • 贵州仁怀通报“正新鸡排鸡腿里全是蛆”:已对同类产品封存送检