unity3d 纹理动画

不知道大家有没有玩过赛车游戏

赛车游戏的跑道有路标,如下图

玩过赛车游戏的都知道,大多数赛车游戏的路标是会动的,如上图,它会从右往左运动

不会发动态图,大家脑补一下吧

没有玩过赛车游戏的也不要紧,大家见过游戏中的瀑布或者湖面吗?如下图:高山流水

当然,我这个贴图的效果不是很好,不过我这里要说的是原理,不妨碍,我们继续

图中的瀑布从上往下流动

我们都知道,如果用粒子的话,有几百个瀑布,在手机上肯定是非常卡的

差一点的手机说不定游戏刚打开就未响应了

除非要求是非常逼真的那种水才用粒子系统,能不用尽量不用

用纹理动画的话虽然达不到粒子那么逼真,但是也是一种不错的解决方案

纹理动画耗费资源还是粒子动画耗费资源呢?我们一探究竟

小二,上图

好勒客官,马上来

这是瀑布的材质球,我们手动修改OffsetX

按每次+0.1这样修改:0.1,0.2,0.3,0.4....

我们会发现,每修改一次材质球就会相应的变动

现在我们归零,修改一下OffsetY,依旧和修改X一样的方法

我们会发现材质球也会有相应的变动,但是方向不一样

如果只观察材质球感觉不容易看出来,那就把材质球挂到物体上,这样看的清楚一些

好了,我们知道如果让材质球动起来了,修改offset即可,那么我们就开始敲代码吧

创建一个 TextureAnimation.cs

定义一个变量:public float XSpeed = 0.1f;//X轴移动速度

然后有了下面的代码

1      public float XSpeed = 0.1f;//X轴移动速度
2
3      void FixedUpdate()
4      {
5          renderer.material.mainTextureOffset = new Vector2(Time.time * XSpeed, renderer.material.mainTextureOffset.y);
6      }

我们挂到瀑布上,然后运行,我们发现瀑布动起来了,但是似乎移动方向和速度不对劲

没关系,我们刚才修改的是X轴,我们在加上Y轴和移动速度不就行了?

依法炮制得出下面的完整代码:

 1 using UnityEngine;
 2 using System.Collections;
 3
 4 /// 纹理动画 <summary>
 5 /// 纹理动画
 6 /// </summary>
 7 public class TextureAnimation : MonoBehaviour
 8 {
 9     public bool MoveX = false;//是否移动X
10     public bool ToUp = false;//往上移动
11     public float XSpeed = 0.1f;//X轴移动速度
12     private float offsetX = 0;
13
14     public bool MoveY = false;//是否移动Y
15     public bool ToLeft = false;//往左移动
16     public float YSpeed = 0.1f;//Y轴移动速度
17     private float offsetY = 0;
18
19
20     void FixedUpdate()
21     {
22         if (MoveX)
23         {
24             offsetX = Time.time * XSpeed;
25             if (ToUp) offsetX *= -1;
26         }
27
28         if (MoveY)
29         {
30             offsetY = Time.time * YSpeed;
31             if (ToLeft) offsetY *= -1;
32         }
33
34         renderer.material.mainTextureOffset = new Vector2(offsetX, offsetY);
35     }
36 }

我就不多解释了,房东一会儿过来收房租了

真烦,我都租了大半年了,想在续租一个月,因为还有一个月我才上班

原来房租是850一个月,现在居然想收我900一个月

原因是我只续租一个月

我教了一千块押金,他怕我跑了不给水电费,非要我在给一千块

我让他来收电费他也不来,说太冷了。。。。

什么人啊这是。。。

不说了,我先闪了

本文链接:http://www.cnblogs.com/shenggege/p/4264463.html

时间: 2024-12-28 08:31:11

unity3d 纹理动画的相关文章

unity3d 纹理的精灵动画效果

精灵动画,顾名思义是一种动画效果,我们用到的贴图是类似胶卷一样的,把每一帧都放在一张图上, 然后通过变换uv值进行位移切换, 如果你之前没有进行过uv相关的变换,可以查看上一篇文章 unity3d 纹理贴图移动特效 首先我们需要一个张这样的贴图 然后建立一个shader 先声明变量 _TexWidth  贴图总宽度 _CellAmount  一张图上包含几个动作(有几个小图片) _Speed  动画的速度 Properties { _MainTex ("Base (RGB)", 2D)

Unity3D 骨骼动画原理学习笔记

最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1.骨骼动画详解 :http://blog.csdn.net/ccx1234/article/details/6641944,不过这篇文章的原文已经被csdn封了:D,可以看看对应的转载的文章也行 2.OpenGL10-骨骼动画原理篇:http://www.cnblogs.com/zhanglitong

火云开发课堂 - 《Shader从入门到精通》系列 第六节:在Shader中使用纹理动画

<Shader从入门到精通>系列在线课程 第六节:在Shader中使用纹理动画 视频地址:http://edu.csdn.net/course/detail/1441/22670?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

【Unity NGUI游戏开发之六】游戏背景采用UV纹理动画

开发背景 游戏中一些背景能采用UV动画,效果更佳.eg.星空.墙壁 因为gif的原因有卡顿,起始播放纹理动画的时候是不会有卡顿的. Unity的NGUI采用纹理动画 NGUI的UITexture允许使用一张纹理 有了这个,我们便可以扩展一个脚本来影响[UV Rect]参数了 /** 基于NGUI的UITexture的纹理动画 1.图片首尾相接的UITexture,可以播放UV纹理动画 2.可以根据定制UV动画方向.速度 3.图片属性: [Texture Type]:Texture [Wrap M

Unity3d Mecanim动画系统Animator学习笔记

1. unity3d Mecanim学习  Unity3d新版动画系统网上的介绍很多,但多是流水笔记,外人很难看明白,后来我 终于找到介绍的比较明白的两个作者,特别感谢.一个是58开发网的乐天老师,课程 视频网址:http://www.58kaifa.com/course/24, 这是一个免费的视频课程,讲解的 很仔细,很清除.另一个是博客园的 阿诚de窝,文章地址:http://www.cnblogs.com/hammerc/category/647246.html, 各个控制面板上的参数含义

Unity3D - 动作动画忽略timeScale

近期在调战斗时的动画与特效.Unity3D对加/减速提供了Time.timeScale支持.可是,timeScale提供的是全局的时间缩放,而我们有些动作或动画是不希望被timeScale加减速的.比方,<刀塔传奇>中播放大招时.除了大招特效,全部别的动作/动画都暂停. 以下各自是Animation.Animator和粒子特效的ignoreTimeScale方法. Animation Time.realtimeSinceStartup记录是不受timeScale影响的真实时间,利用它来在每一帧

unity3d 纹理贴图移动特效产生岩浆、瀑布效果

纹理贴图移动特效产生岩浆.瀑布效果 原理是改变动态改变纹理坐标uv的值,使之移动 首先准备好一张贴图 建立一个shader 变量一览: _MainTex 主纹理贴图 _MainTint 主要颜色 _ScrollXSpeed x轴移动速度 _ScrollYSpeed  y轴移动速度 Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _MainTint ("Diffuse Tint", Col

(转)Unity3D - 动作动画忽略timeScale

转自:http://blog.csdn.net/ynnmnm/article/details/46866347 最近在调战斗时的动画与特效,Unity3D对加/减速提供了Time.timeScale支持.但是,timeScale提供的是全局的时间缩放,而我们有些动作或动画是不希望被timeScale加减速的.比如,<刀塔传奇>中播放大招时,除了大招特效,所有别的动作/动画都暂停. 下面分别是Animation.Animator和粒子特效的ignoreTimeScale方法. Animation

Unity3D骨骼动画的分解(CleanData.Ani详解)

CleanData是什么 CleanData以前没有特定的名字,(在easydown这个开源项目中,作为一个GameObjParser模块存在).在某三国项目中,我们使用GameObjParser将NGUI 的预设保存为自定义格式(替代了assetbundle方案),以实现不论任何平台都可以使用同一份资源.在easydown的演示中GameObjParser也将一个简单的模型场景保存为自定义格式并加载.so.CleanData是想去做AssetBundle的工作,但是格式是我们自定义的,细节更透