[Unity]代码控制在3D物体上播放帧动画
不使用Unity自带的Animation,在3D物体上播放帧动画
图片必须是可以整齐排列的 可以分割的完整的图片。
像这样
不能像这样:
也不能像这样,过于紧凑,不能完整切割
空项目,空场景,
场景中新建一个 Quad空物体
项目工程文件夹导入一个 含有 所有 帧动画 的图片。
项目工程文件夹中新建一个 空的材质,设置为Transparent透明,MainMaps的Albedo的图片设置为刚才导入的图片。
把这个材质 设置为 刚才 新建的 Quad的材质。
脚本挂载到一个新建的空物体上,把 那个 含有全部帧动画 的图片拖入 到这个脚本的tex上面,
把新建的Quad物体 拖入到 这个脚本的MeshFilter上。
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class testAnima : MonoBehaviour
{public Texture2D tex;public MeshFilter MeshFilter;/// <summary>/// 当前帧/// </summary>private float _currentFrame = -1;/// <summary>/// 开始播放的时间/// </summary>private float _playStartTime;/// <summary>/// 行/// </summary>private int _tilesX = 10;/// <summary>/// 列/// </summary>private int _tilesY = 9;/// <summary>/// 动画有多少帧动画/// </summary>private int _framesCount = 90;/// <summary>/// 帧数,9,90,900进行测试,对应 1个Unity帧0.02s,/// 9,播放一个动画帧(90/9)*0.02s=0.2s/// 90,播放一个动画帧(90/90)*0.02s=0.02s/// 900,播放一个动画帧(90/900)*0.02s=0.002s/// </summary>private int _fps = 9;void Awake(){this._playStartTime = Time.time;}// Update is called once per framevoid Update(){if (MeshFilter == null){return;}if (_framesCount > 1){int frame = (int)((Time.time - _playStartTime) * _fps);frame = frame % _framesCount;this.SetFrame(frame);}}/// <summary>/// Sets the frame./// </summary>/// <param name="frame">Frame.</param>public void SetFrame(int frame){if (this._framesCount == 1){return;}float xUnitSize = 1.0f / this._tilesX;float yUnitSize = 1.0f / this._tilesY;int xIndex = frame % this._tilesX;int yIndex = frame / this._tilesX;yIndex = this._tilesY - yIndex - 1;Vector2[] uv = new Vector2[] {//正常朝向右/*new Vector2(xIndex * xUnitSize, yIndex * yUnitSize),//左下new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(xUnitSize, 0),//右下new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(0, yUnitSize),//左上new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(xUnitSize, yUnitSize),//右上*///正常朝向左,与原图 水平翻转new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(xUnitSize, 0),//右下new Vector2(xIndex * xUnitSize, yIndex * yUnitSize),//左下new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(xUnitSize, yUnitSize),//右上new Vector2(xIndex * xUnitSize, yIndex * yUnitSize) + new Vector2(0, yUnitSize),//左上};this.MeshFilter.mesh.uv = uv;this._currentFrame = frame;}
}
相关资料:
1.
[Unity]通过设置MeshRender的uv来显示图片的帧动画
2.项目分享
3.
[Unity]代码控制在3D物体上播放帧动画相关推荐
- unity 鼠标放置在3D物体上,显示物体名称
做个记录,也方便自己以后查看,大家共同交流 源代码 using System.Collections; using System.Collections.Generic; using UnityEng ...
- unity代码控制物体的透明度总结
以前测试过的成功实例,主图如下,默认材料可能不行,要新建一个拖到物体上,此例用的rendering mode是不透明模式即opaque,30的透明度(下面的例子用opaque原始透明度255就不行,所 ...
- Unity鼠标控制摄像机 围绕物体旋转
Unity鼠标控制摄像机 围绕物体旋转 角度范围判定 // An highlighted block using UnityEngine;public class CameraCtrl : MonoB ...
- 关于Unity视频播放器插件 AVPro Video(二)3D物体上视频播放
1.官网下载该插件或者我分享的链接: 链接:https://pan.baidu.com/s/1boGeJ8r 密码:mvbf 2.新建项目创建主要控制物体 3.创建对于视频播放在3D物体身上的材质 4 ...
- 【Unity入门】3.3D物体
[Unity入门]3D物体 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)物体移动旋转缩放 (1)物体移动 在上一篇文章 ...
- Unity TouchScripts实例 - 判断在物体上滑动
使用PressGesture和ReleaseGesture实现检测是否有在物体上滑动 原理:触碰时触发PressGesture,离开时触发ReleaseGesture,比较触碰时和离开时位置的x值即可 ...
- unity 通过鼠标让3D物体在xyz三个轴移动
工具 unity2018 vs2017 资源:要移动的模型 ,一个三维坐标轴 结果(暂时没找到办法放本地录屏,就先放图了): 通过鼠标拖动xyz三个轴,实现物体在三维空间的移动(可以是本地坐标也可以是 ...
- IOS重写unity Splash,消除黑屏,播放开场动画视频
IOS重写unity Splash,消除黑屏,自定义开场动画视频,无需破解 此教程只使用于unity5.x系列,2018请看我新发的教程 因为自己使用的unity是免费版,无法去除splash,所以在 ...
- 通过 ruffle 使用 WebAssembly 在网页上播放 swf 动画
flash 播放器将退出历史舞台,但是不能直接就抛弃 flash 动画,需要有顶替的方案.网上找到的就是用 webassembly 播放 swf 动画. github 上有个大神已经做出来了,而且经过 ...
最新文章
- 人类首张脑电波连接全图问世
- 【django】配置redis数据库【4】
- cocos creator基础-创建WX开放域遇到的问题
- 20151022作业
- 操作无法完成因为已经在mysqld.exe上打开_金蝶KIS软件操作技巧/百问百答(下)...
- python可以读取excel文档吗_python打开excel文件【python读取excel文件如何进行】
- POJ 1221 UNIMODAL PALINDROMIC DECOMPOSITIONS
- java new 数据类型_Java之基本数据类型
- 3.26 文字工具的使用 [原创Ps教程]
- windows下iexplore的命令行参数
- TOEFL wordlist 16
- 获取Linux系统的网卡ip地址
- linux ntfs格式u盘实现与挂载
- 轻量级服务器和ECS云服务器有什么区别?
- 嵌入式开发板设置IP
- image失败 安装scikit_安装scikit-image问题
- 指数基金投资指南读书笔记
- Python数据可视化工具matplotlib(五)-- 面积图、填图、饼图
- 精细化运营店铺,引导店铺走向正轨,带你玩转淘宝
- 热加工作业考研题目答案分享——Joining processes 4