[技术博客]Unity3d 动画控制
在制作游戏时,导入的箱子模型本身自带动画。然而,它的动画是一个从打开到关闭的完整过程,并且没有给出控制打开关闭的方法。
最直接的想法是对该动画进行拆分,再封装成不同的动画状态,但是不巧的是,这个动画被设置了不可修改。因此我们只能退而求其次,采取添加动画帧事件的方式对动画进行控制。
动画帧事件,顾名思义,是动画运行到某一帧就会执行的事件。即在动画的某一帧上添加一个函数,利用多个这类函数,就能间接地达到控制动画的目的。
1.实现前的功能分析
再来回顾一下我们的需求。首先我们拥有的是一个箱子从打开到关闭的完整动画,而在我们游戏中想要做到的是:
- 按下开始按钮之前,箱子保持关闭状态。
- 按下开始按钮之后,箱子开始打开,在完全打开之后箱子动画暂停,执行流水线的流程。
- 流水线流程结束之后,箱子关闭,在完全关闭之后,给出流水线执行的结果。
因此,我们要加的动画帧事件其实只有两个。第一个是在箱子完全打开的关键帧处,第二个在箱子完全关闭的关键帧处。
2.关键帧事件的添加
如下图所示,这是箱子动画内容,用红圈圈出的就是我们添加的关键帧事件。

如何添加这些关键帧事件呢?
如下图所示,点开箱子模型,在它的inspector中选择Animation。

下拉inspector界面,就能看到下图内容,其中用红圈圈出的Events就是我们添加事件的地方。
点击Events下方的按钮,即可创建一个新的事件,通过左右拖动这个事件让其到达指定的帧数,下方的Function栏是指定该事件对应函数的函数名。

3.关键帧事件具体实现函数的添加
完成上述操作之后,仅仅只是加入关键帧事件,但事件对应的具体实现函数还没有添加,因此它还不能实现我们需要的功能。
这些具体实现函数所在的脚本一定得加在播放函数的物体上,并且脚本中需要有与我们刚刚添加的关键帧事件Function栏中名字相同的函数。
在我们的实现中,我创建了一个名为AnimationControl的脚本来实现对应函数。

4.具体实现函数的编写
最后一步是编写对应函数。
两个函数都非常简单,每一个函数主要是实现两个功能:
-1.暂停动画。
-2.调用流水线控制脚本中的函数实现流水线的运转。
下图为函数内容

至此,我们就完成了对动画的控制。
[技术博客]Unity3d 动画控制的更多相关文章
- ******IT公司面试题汇总+优秀技术博客汇总
滴滴面试题:滴滴打车数据库如何拆分 前端时间去滴滴面试,有一道题目是这样的,滴滴每天有100万的订单,如果让你去设计数据库,你会怎么去设计? 当时我的想法是根据用户id的最后一位对某个特殊的值取%操作 ...
- 【新版】Android技术博客精华汇总
[新版]Android技术博客精华汇总(原文链接内持续更新) http://www.apkbus.com/thread-313856-1-1.html Kotlin Kotlin学习资料汇总 http ...
- [技术博客]使用wx.downloadfile将图片下载到本地临时存储
目录 目标 代码展示 重点讲解 目标 在上一篇技术博客中,我们生成的海报中包含图片,这些图片是存储到服务器上的,而canvas的drawimage函数只能读取本地文件,因此我们在drawCanvas之 ...
- [技术博客]海报图片生成——小程序canvas画布
目录 背景介绍 canvas简介 代码实现 难点讲解 圆角矩形裁剪失败之PS的妙用 编码不要过硬 对过长的文字进行截取 真机首次生成时字体不对 drawImage只能使用本地图片 背景介绍 目标:利用 ...
- [技术博客] Android 自动化测试
[技术博客] Android 自动化测试 安卓自动化测试工具与平台的搭建 类似于网页端自动化,安卓测试的自动化也主要是针对控件的自动化.其原理就是通过python(其他语言) 的脚本来代替我们手动完成 ...
- [技术博客]采用Bootstrap框架进行排版布局
[技术博客]采用Bootstrap框架进行排版布局 网页的前端框架有很多很多种,比如Bootstrap.Vue.Angular等等,在最开始其实并没有考虑到框架这回事,开始阅读往届代码时发现其部分采用 ...
- [技术博客]iview组件样式踩坑记录
[技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...
- 技术博客--微信小程序canvas实现图片编辑
技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...
- 【技术博客】利用handler实现线程之间的消息传递
[技术博客]利用handler实现线程之间的消息传递 一.handler简介 在Android Studio的开发中,经常需要启动多个线程.比如向远程发送请求时,必须新开一个子线程,否则会造成程序崩溃 ...
随机推荐
- 优化技术专题-线程间的高性能消息框架-深入浅出Disruptor的使用和原理
前提概要 简单回顾 jdk 里的队列: 阻塞队列: ArrayBlockingQueue主要通过:数组(Object[])+ 计数器(count)+ ReetrantLock的Condition (n ...
- SVN无法查看最近日志和提交记录
现象: 使用SVN查看最近的提交记录日志时,最近总是无法显示出全部的日志内容,只能显示到几天之前的日志.就算是自己刚提交的代码也是无法没有记录的. 解决方式:右键选择TortoiseSVN中的&quo ...
- 从输入 URL 到展现页面的全过程
总体分为以下几个过程 DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 DNS解析 域名到ip地址转换 TCP连接 HTTP连接是基于TCP连接 ...
- js简单化技巧
1.交换两个变量而没有第三个 let x = 1;let y = 2;[x, y] = [y, x];console.log(x, y); 输出: 2 1 2.将数字转换为字符串 const num ...
- 深入学习Composer原理(四)
本系列第四篇文章,也是最后一篇 首先,我们先看看Composer的源码从哪里看起.当然,请您先准备好源码. composer init或者直接install之后,自动生成了一个vendor目录,这时您 ...
- 5ucms后台新增字段
1.修改admin\inc\class_content.asp文件,把需要的字段添加进去 2.修改\admin\admin_content.asp 文件,把需要的字段添加进后台操作模板 3.用sql语 ...
- Jmeter系列(6)- 分析源码,创建登录、浏览商品接口请求
前言简介 接口的压力测试有个二八原则:线上80%的用户量在一天24小时20%(即4.8个小时)的时间里可以平稳运行,这个接口就算是通过压力测试了 源码分析 登录 浏览商品 创建请求 登录 浏览菜单 C ...
- Jmeter系类(31) - JSR223(1) | 控件介绍
JSR233 介绍 JSR223控件执行JSR223脚本代码用于创建/更新所需的某些变量 JSR223可以使用其内置的变量,有助于精简脚本,提高开发测试的效率 由于JSR223脚本编译方式基本相同,J ...
- Shell系列(30)- 单分支if语句判断分区使用率
需求 监控分区已用空间,超过80%,抛出警告 脚本 #!/bin/bash #给tets赋值用于接收参数,传递给if进行判断 #申明变量test并赋值,由于赋的值是系统变量的结果,所以得用$()引用 ...
- linux 服务器资源 监控工具
工具一:vmstat(服务端) 一.vmstat选项参数解释 -V:显示vmstat版本信息 -n:只在开始时显示一次各字段名称 -a:显示活跃和非活跃内存 -d:显示各个磁盘相关统计信息 -D:显示 ...