之前看了以前版本的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:

选择Ripple(Material)下的Main Tex.offset.x,点击右边的小横线->Addkey。

拖动时间轴到0.05,再次Addkey,修改offset.x为0.1666。分别在0帧Addkey,offset.x为0,0.05帧 Addkey,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。

1
2
3
4
5
6
7
8
9
10
using UnityEngine;
using System.Collections;
 
public class RippleDestroy : MonoBehaviour
{
    public void DestroyMe()
    {
        Destroy(gameObject);    //删除自身
    }
}

将脚本赋给RippleObj。

在Animation窗口中,最后一帧即0.25帧处,点击右边的Add Event按钮,在0.25帧添加一个事件并将DestroyMe()赋给Function。

步骤7:

将RippleObj拖到rainFX文件夹中,使之成为一个prefab。然后可以将场景中的RippleObj删掉。

创建一个空物体。GameObject—>Create Empty。改名为ripple,此时场景中只有Main Camera,ripple。

创建一个rippleFX脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using UnityEngine;
using System.Collections;
 
public class rippleFX : MonoBehaviour
{
    public GameObject rippleObj;    //涟漪实例
    int ti;        //计时器
     
    void Start ()
    {
         
    }
     
    void Update ()
    {
        ti++;
        if(ti>=5)        //每隔5帧,计时器发生作用
        {
            GameObject tempObj=Instantiate(rippleObj) as GameObject;        //复制涟漪物体
            tempObj.transform.parent=gameObject.transform;                //设置子物体
            tempObj.animation.Play();                                    //播放动画文件
            tempObj.transform.position=transform.position+new Vector3(Random.Range(10,-10),0,Random.Range(10,-10));//移动涟漪物体到一个随机位置
        }
    }
}

将rippleFX脚本赋给空物体ripple,再将prefab物体RippleObj赋给ripple的脚本的变量RippleObj即可。

点击运行,即可出现地上很多涟漪的效果。

下雨效果分两部分:地上的涟漪和空中的雨滴。

现在开始使用unity3d的粒子系统制作下落的雨滴

步骤1:

新建一个粒子系统。

GameObject—>Create other—>Particle System。改名为raindrop。

步骤2:

新建一个材质(material),改名为跟贴图一样的名称RainStreak,修改材质的Shader为Particles/Addtive。

将贴图RainStreak赋给材质,修改Tiling的x为8。

修改RainStreak贴图的Wrap Mode为clamp(8为使贴图在单位面积上显示8个,即使单个贴图的面积变小,然后修改Wrap Mode为clamp即使粒子系统中显示的粒子为变小后的单个贴图)。

步骤3:

将RainStreak的Material赋给粒子系统的Render下面的Material。

此时粒子系统中显示的即为雨滴的贴图。

步骤4:

修改粒子系统的Shape,使之变为圆柱形。

调节参数Emission下的Rate,可修改雨滴密度。

Rotate by Speed下的Angular Velocity可改变雨滴的下落方向。

调节各个参数完毕后,即可达到最终效果(多调下参数,以便达到更好的效果)。

到此,下雨效果完成(这里的效果看起来比较糙...)。

另外,可以把所用到的材质、贴图、脚本等资源全部放到rainFX文件夹中,方便以后使用的时候直接拿过来用就可以了~~

我把素材及工程源文件上传到网盘,童鞋们可以下载来看看~~

http://pan.baidu.com/share/link?shareid=522605416&uk=3761044284

使用Unity3D自带动画系统制作下雨效果的更多相关文章

  1. Unity3d中使用自带动画系统制作下雨效果(一)

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...

  2. Unity3d中使用自带动画系统制作下雨效果(二)

    接着昨天的(一),今天上下雨效果的后半部分.在最后附上网盘链接,有使用的素材及本次的工程源文件,想看看的童鞋可以下载~~ 下雨效果分两部分:地上的涟漪和空中的雨滴.那么现在就开始,是使用unity3d ...

  3. Unity3D之Legacy动画系统学习笔记

    Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...

  4. [原]Unity3D深入浅出 - 新版动画系统(Mecanim)

    Mecanim概述: Mecanim是Unity提供第一个丰富而复杂的动画系统,提供了: 针对人形角色的简易的工作流和动画创建能力 Retargeting(运动重定向)功能,即把动画从一个角色模型应用 ...

  5. Unity3D之Mecanim动画系统学习笔记(十):Mecanim动画的资源加载相关

    资源加载是必备的知识点,这里就说说Mecanim动画的资源如何打包及加载. 注意,Unity4.x和Unity5.x的AssetBundle打包策略不一样,本笔记是基于Unity4.x的AssetBu ...

  6. Unity3D之Mecanim动画系统学习笔记(二):模型导入

    我们要在Unity3D中使用上模型和动画,需要经过下面几个阶段的制作,下面以一个人形的模型开发为准来介绍. 模型制作 模型建模(Modelling) 我们的美术在建模时一般会制作一个称为T-Pose( ...

  7. Unity3D之Mecanim动画系统学习笔记(一):认识Mecanim动画系统

    Mecanim简介 Mecanim动画系统是Unity3D4.0开始引入的一套全新的动画系统,主要提供了下面4个方面的功能: 针对人形角色提供一套特殊的工作流. 动画重定向的能力,可以非常方便的把动画 ...

  8. 解决Unity3d 4.3 动画系统带来的烦恼

    近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unit ...

  9. Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)

    认识Blend Tree 我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下: 那么我们看下新创建的Blend Tree和State有什 ...

随机推荐

  1. OPM与ILE编程模式的区别

    OPM与ILE编程模式的区别 OPM是传统编程模式,即一个可执行的程序只用一种语言编程:一个可执行程序只有一段程序代码组成:程序之间的调用关系是动态的调用关系. ILE是多语言开发集成编程模式,即一个 ...

  2. 1056. Mice and Rice (25)

    时间限制 30 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Mice and Rice is the name of a pr ...

  3. jquer ajax

    function SetValue() { var strCodeName = $("#MainContent_ddlFullNameAndFullName").val(); ) ...

  4. android项目在eclipse下编译运行的问题

    JDK与电脑系统要匹配,都是32位或者64位: android工程要与JDK相匹配,如果之前的android工程使用的jdk版本较高,则可能出现一些包或者类.方法.属性对应不上而报错,Android ...

  5. swift基础--字符串

    (1)遍历 (2)长度 (3)拼接 (4)插值 (5)大小写 (6)trim (7)split ……等等 var a = "你好" var b = String() a.isEmp ...

  6. C语言关键字-volatile

    1.C语言关键字volatile     C 语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取 不能缓存 ...

  7. iOS 沙盒路径获取,创建文件

    沙盒下主要有四个文件夹:document,caches,tmp,library document 的路径 程序运行时生成的文件,这个文件不要存比较放大的文件,比如音频,视频类,因为这里的东西会被上传 ...

  8. Maven系列--"maven-compiler-plugin"的使用、Maven之Surefire插件

    一."maven-compiler-plugin"的使用 http://my.oschina.net/poorzerg/blog/206856 二.Maven之Surefire插件 ...

  9. PAT-乙级-1036. 跟奥巴马一起编程(15)

    1036. 跟奥巴马一起编程(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 美国总统奥巴马不仅呼吁所有人 ...

  10. iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)

    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...