Unity3d中使⽤⾃带动画系统制作下⾬效果(⼀)
之前看了以前版本的unity3d demo AngryBots ,觉得⾥⾯的下⾬效果不错,刚好前段时间学习了,写出来跟⼤家分享下,直接开始。
使⽤⾃带动画系统制作下⾬效果。
先制作下⾬的⾬滴涟漪。
步骤1:
在project中新建⽂件夹,命名为rainFX。将图⽚素材RainStreak及Ripple导⼊到rainFX⽂件夹中,创建⼀个plane,改名为RippleObj,创建⼀个material,命名为ripple。(将导⼊的Ripple贴图的Alpha from Grayscale 打上勾,以使贴图的背景透明)
步骤2:
将ripple材质赋给RippleObj。
修改材质的Shader为Particles/Addtive,将Ripple贴图赋给ripple材质的Texture,在inspector窗⼝中修改Particle Texture,Tilling的x值设为0.1666,y为1,offset的x为
0.8333,y为0。选中RippleObj,将Shader下的Tint Color改为⽩⾊。(改为⽩⾊为了使⾬滴更加明显⼀点)
修改后效果:
步骤3:
选中RippleObj,按Ctrl+6,调出Animation窗⼝,点击窗⼝下的Ripple(material),会发现下⾯都是灰⾊不可选状态。
点击RippleObj右边的⼀个⼩按钮,会出现[Create New Clip],点击。此时Ripple(Material)下的选项都已可⽤。
点击后会出现下⾯的对话框,提⽰保存动画⽂件。命名为RainAnimation,保存。
步骤4:unity3d animation
选择Ripple(Material)下的Main Tex.offset.x,点击右边的⼩横线->Addkey。
拖动时间轴到0.05,再次Addkey,修改offset.x为0.1666。分别在0帧Addkey,offset.x为0,0.05帧Ad
dkey,offset.x为0.1666,0.1帧Addkey,offset.x为0.3333,0.15帧Addkey,offset.x为0.5,0.2帧Addkey,offset.x为0.6666,0.25帧Addkey,offset.x为0.8333。效果图如下:
步骤5:
此时的Animation窗⼝中有⼀条从0.0—0.25的红⾊斜线,⽤⿏标框选六个关键帧,右键—>Both Tangents—>Constant(右键需在红⾊的关键点上点击)。此时斜线被改为梯形上升的线。选择Tint Color.a,在0.0帧修改Tint Color.a为1,0.25帧即最后⼀帧设置Tint Color.a为0。使动画有⼀个透明渐变的效果。
到此,涟漪效果制作完成。
步骤6:开始添加脚本,控制涟漪的消失,脚本名:RippleDestroy。
1using UnityEngine;
2using System.Collections;
3
4public class RippleDestroy : MonoBehaviour
5 {
6public void DestroyMe()
7    {
8        Destroy(gameObject);    //删除⾃⾝
9    }
10 }
将脚本赋给RippleObj。
在Animation窗⼝中,最后⼀帧即0.25帧处,点击右边的Add Event按钮,在0.25帧添加⼀个事件并将DestroyMe()赋给Function。
步骤7:
将RippleObj拖到rainFX⽂件夹中,使之成为⼀个prefab。然后可以将场景中的RippleObj删掉。
创建⼀个空物体。GameObject—>Create Empty。改名为ripple,此时场景中只有Main Camera,ripple。
创建⼀个rippleFX脚本:
1using UnityEngine;
2using System.Collections;
3
4public class rippleFX : MonoBehaviour
5 {
6public GameObject rippleObj;    //涟漪实例
7int ti;        //计时器
8
9void Start ()
10    {
11
12    }
13
14void Update ()
15    {
16        ti++;
17if(ti>=5)        //每隔5帧,计时器发⽣作⽤
18        {
19            GameObject tempObj=Instantiate(rippleObj) as GameObject;        //复制涟漪物体
20            ansform.ansform;                //设置⼦物体
21            tempObj.animation.Play();                                    //播放动画⽂件
22            ansform.position=transform.position+new Vector3(Random.Range(10,-10),0,Random.Range(10,-10));//移动涟漪物体到⼀个随机位置
23        }
24    }
25 }
将rippleFX脚本赋给空物体ripple,再将prefab物体RippleObj赋给ripple的脚本的变量RippleObj即可。
点击运⾏,即可出现地上很多涟漪的效果。
涟漪做完了,下⼀篇继续写⾬滴的做法~~

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。