在制作游戏时,导入的箱子模型本身自带动画。然而,它的动画是一个从打开到关闭的完整过程,并且没有给出控制打开关闭的方法。

最直接的想法是对该动画进行拆分,再封装成不同的动画状态,但是不巧的是,这个动画被设置了不可修改。因此我们只能退而求其次,采取添加动画帧事件的方式对动画进行控制。

动画帧事件,顾名思义,是动画运行到某一帧就会执行的事件。即在动画的某一帧上添加一个函数,利用多个这类函数,就能间接地达到控制动画的目的。

1.实现前的功能分析

再来回顾一下我们的需求。首先我们拥有的是一个箱子从打开到关闭的完整动画,而在我们游戏中想要做到的是:

  • 按下开始按钮之前,箱子保持关闭状态。
  • 按下开始按钮之后,箱子开始打开,在完全打开之后箱子动画暂停,执行流水线的流程。
  • 流水线流程结束之后,箱子关闭,在完全关闭之后,给出流水线执行的结果。

    因此,我们要加的动画帧事件其实只有两个。第一个是在箱子完全打开的关键帧处,第二个在箱子完全关闭的关键帧处。

2.关键帧事件的添加

如下图所示,这是箱子动画内容,用红圈圈出的就是我们添加的关键帧事件。

如何添加这些关键帧事件呢?

如下图所示,点开箱子模型,在它的inspector中选择Animation。

下拉inspector界面,就能看到下图内容,其中用红圈圈出的Events就是我们添加事件的地方。

点击Events下方的按钮,即可创建一个新的事件,通过左右拖动这个事件让其到达指定的帧数,下方的Function栏是指定该事件对应函数的函数名。

3.关键帧事件具体实现函数的添加

完成上述操作之后,仅仅只是加入关键帧事件,但事件对应的具体实现函数还没有添加,因此它还不能实现我们需要的功能。

这些具体实现函数所在的脚本一定得加在播放函数的物体上,并且脚本中需要有与我们刚刚添加的关键帧事件Function栏中名字相同的函数。

在我们的实现中,我创建了一个名为AnimationControl的脚本来实现对应函数。

4.具体实现函数的编写

最后一步是编写对应函数。

两个函数都非常简单,每一个函数主要是实现两个功能:

-1.暂停动画。

-2.调用流水线控制脚本中的函数实现流水线的运转。

下图为函数内容

至此,我们就完成了对动画的控制。

[技术博客]Unity3d 动画控制的更多相关文章

  1. ******IT公司面试题汇总+优秀技术博客汇总

    滴滴面试题:滴滴打车数据库如何拆分 前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计? 当时我的想法是根据用户id的最后一位对某个特殊的值取%操作 ...

  2. 【新版】Android技术博客精华汇总

    [新版]Android技术博客精华汇总(原文链接内持续更新) http://www.apkbus.com/thread-313856-1-1.html Kotlin Kotlin学习资料汇总 http ...

  3. [技术博客]使用wx.downloadfile将图片下载到本地临时存储

    目录 目标 代码展示 重点讲解 目标 在上一篇技术博客中,我们生成的海报中包含图片,这些图片是存储到服务器上的,而canvas的drawimage函数只能读取本地文件,因此我们在drawCanvas之 ...

  4. [技术博客]海报图片生成——小程序canvas画布

    目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...

  5. [技术博客] Android 自动化测试

    [技术博客] Android 自动化测试 安卓自动化测试工具与平台的搭建 类似于网页端自动化,安卓测试的自动化也主要是针对控件的自动化.其原理就是通过python(其他语言) 的脚本来代替我们手动完成 ...

  6. [技术博客]采用Bootstrap框架进行排版布局

    [技术博客]采用Bootstrap框架进行排版布局 网页的前端框架有很多很多种,比如Bootstrap.Vue.Angular等等,在最开始其实并没有考虑到框架这回事,开始阅读往届代码时发现其部分采用 ...

  7. [技术博客]iview组件样式踩坑记录

    [技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...

  8. 技术博客--微信小程序canvas实现图片编辑

    技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...

  9. 【技术博客】利用handler实现线程之间的消息传递

    [技术博客]利用handler实现线程之间的消息传递 一.handler简介 在Android Studio的开发中,经常需要启动多个线程.比如向远程发送请求时,必须新开一个子线程,否则会造成程序崩溃 ...

随机推荐

  1. error : Hooks can only be called inside of the body of a function component. 依赖包和主包加载多个react 引发冲突问题

    1. 结论: 在依赖包和主包的node-modules中,同时install包含react , react-dom 或者react-redux时,跑测试或者启动的时候,显示如下error.当然出现这个 ...

  2. python3 爬虫五大模块之一:爬虫调度器

    Python的爬虫框架主要可以分为以下五个部分: 爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义: URL管理器:负责URL的管理,包括 ...

  3. Spirit带你彻底了解事件捕获和冒泡机制

    Dom标准事件模型 在Dom标准事件模型中,事件是先进行捕获,达到目标阶段时,在进行冒泡的 捕获阶段==>目标阶段==>冒泡阶段 目标元素和非目标元素 在介绍事件捕获和事件冒泡前 我们先要 ...

  4. Collections集合工具类和可变参数

    Collections常用的API: public static <T> boolean addAll(Collection<? super T> c, T... elemen ...

  5. 自己实现一个Controller——精简型

    写在最前 controller-manager作为K8S master的其中一个组件,负责众多controller的启动和终止,这些controller负责监控着k8s中各种资源,执行调谐,使他们的实 ...

  6. # Zombie Gunship Survival(僵尸炮艇生存)GG修改器修改教程

    Zombie Gunship Survival(僵尸炮艇生存)GG修改器修改教程 1.修改伤害,打击范围,武器冷却时间,子弹容量 测试手机机型:华为畅享7 系统版本:Android7.0 是否ROOT ...

  7. 【C++周报】第一期2021-8-1

    [C++周报]第一期 2021-8-1 这一期我们来看这道题目:https://vijos.org/p/1058 这道题是一道非常好的模拟题.题目如下: 描述 我们用文本处理器来处理一个特殊的文本文件 ...

  8. 【TP3.2.3】addAll方法的坑

    问题:做一个导入Excel到数据库的功能中需要用到addAll功能,但是每次执行到addAll()时都会报错,如下 Insert value list does not match column li ...

  9. Docker系列(2)- Docker中的名词概念

    Docker工作流程 名词概念 镜像(image): docker镜像就好比一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run===>tomcat01(提供服务器) ...

  10. 深入理解Python切片

    Python序列的切片很基础同时也很重要,最近看到一个[::-1]的表达,不明所以,查了一些资料并实际操作,对Python切片有了更深刻的认识,以下结合例子详细说明.先看下切片的基本语法,一般认为切片 ...