Unity3D学习之(粒子系统以及相机的跟随)

来源:互联网 发布:网络打印机ip地址设置 编辑:程序博客网 时间:2024/05/21 10:01

欢迎大家光临我的博客

 

欢迎来到unity学习unity培训unity企业培训教育专区,这里有很多U3D资源U3D培训视频U3D教程U3D常见问题U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

 

一、首先介绍一下粒子系统:

1.Emission:发射模块

控制粒子的发射速率(Rate),在粒子持续时间内,可实现某个特定时间生成大量粒子的效果,可模拟爆炸效果生成一大堆的粒子。

 

2.Shape :形状模块

定义粒子发射器的形状,可提供沿形状表面法线或随机方向的初始力,并控制粒子的发射位置以及方向。

 

3.Velocity over Lifetime :生命周期速度模块

制着生命周期内每一个粒子的速度,对有着物理行为的粒子效果更明显,但对于那些简单视觉行为效果的粒子,如烟雾飘散效果以及与物理世界几乎没有互动行为的粒子,此模块的作用就不明显了。

 

4.Limit Velocity over lifetime :生命周期速度限制模块

控制粒子在生命周期内的速度限制以及速度衰减,可以模拟类似拖动的效果。若粒子的速度超过设定的限定值,则粒子速度之会被锁定到该限定值。

 

5.Force over Lifetime:生命周期作用力模块

控制粒子在生命周期内的受力情况。

 

6.Color over lifetime:生命周期颜色模块

控制粒子在生命周期内的颜色变化。

 

7.Color by Speed:颜色的速度控制模块

此模块可让每个粒子的颜色根据自身的速度变化而变化。

 

8.Size Over Lifetime :生命周期粒子大小模块

控制每一颗粒子在其生命周期内的大小变化。

 

9.Size by Speed:粒子大小的速度控制

此模块可让每颗粒子的大小根据自身的速度变化而变化。

 

10.Rotation Over Lifetime :生命周期旋转模块

控制每颗粒子在生命周期内的旋转速度变化。

 

11.Rotation by Speed :旋转速度控制模块

此模块可让每颗粒子的旋转速度根据自身速度的变化而变化。

 

12.External Forces:外部作用力模块

此模块可控制风域的倍增系数。

 

13.Collision:碰撞模块

可为每颗粒子建立碰撞效果,目前只支持平面碰撞,该碰撞对于简单的碰撞检测效率非常高。

 

14.Sub Emitters:子发射器模块

此模块可时粒子在出生、消亡、碰撞等三个时刻生成其他的粒子。

 

15.TextureSheet Animation:序列帧动画纹理模块

可对粒子在其生命周期内的UV坐标产生变化,生成粒子的UV动画。可以将纹理划分成网格,在每一格存放动画的一帧。同时也可以将文理划分为几行,每一行是一个独立的动画。需要注意的是,动画所使用的纹理在Renderer模块下的Material属性中指定。

 

16.Renderer:粒子渲染器模块

该模块显示了粒子系统渲染相关的属性。

 

接下来做了一个效果图(粒子效果)

 

二、探照灯效果

1、创建一个Plane和一个Cube作为参照物

2、创建一个点光源放在Cube上方

3、为点光源创建一个脚本,完成探照灯效果

 

效果图:

 

代码如下:

    public Vector3 newPos;

    public float smooth = 16;

void Start () {

        newPos = transform.position;

}

// Update is called once per frame

void Update () {

    if(Input.GetKeyDown(KeyCode.Q))

        {

            newPos = new Vector3(-3,5,-10);

        }

        if(Input.GetKeyDown(KeyCode.E))

        {

            newPos = new Vector3(3,5,-10);

        }

        transform.position = Vector3.Lerp(transform.position, newPos, smooth * Time.deltaTime);

}

 

三、摄像机的跟随效果

当主角在游戏场景中行走时,ゝ我们会把相机跟随主角的位置随意转动

主要代码如下:

    public Transform Troll;      //我们依然把Troll做为游戏中的主角

    public float smooth = 3;

void Update () {

        Vector3 pos = Troll.position + new Vector3(0, 9, -13);

        transform.position = Vector3.Lerp(transform.position, pos, smooth * Time.deltaTime);

}

 


 

更多精彩请点击:http://unity.gopedu.com/


0 0
原创粉丝点击