Unity3d实现一个流星效果(Trail Renderer)

案例效果可以看上图所示的gif动图。

1:设计思路

该效果的实现,主要依靠拖尾渲染器(Trail Renderer)来实现,创建一个球体,给该球体添加

Trail Renderer组件,再创建一个控制球体产生的脚本,即可实现效果。

2:天空盒子设置

为更好的衬托出流星的氛围,天空盒子为宇宙背景,创建一个新Material,命名为SkyBox1

设置如下:

3:创建球体(流星)预制体

3.1创建球体并添加Trail Renderer组件

在场景中创建一个球体,并改名为StarPrefab,给StarPrefab添加Trail Renderer组件,设置如下:

其中,需要注意:

1处为渲染的宽度,

2处为渲染时间

3处为颜色,在此我设置的透明度较低

4处为渲染的材质,我是使用默认的材质,不然没有材质,效果为紫色。

3.2给流星添加运动动画

流星需要运动,想看出Trail Renderer的渲染轨迹,也需要运动,在此本人使用动画来实现。

给球体starPrefab添加一个Animation动画,并在Animator中设置好动画,不是循环播放动画。

动画设置如下;

这样就实现了流星的运动,

在Assets中创建Prefabs文件夹,将该球体starPrefab拖拽进Assets中的Prefabs文件中,形成预制体。

3.3控制流星销毁

给流星starPrefab添加脚本StarMove.cs  用来控制流星的销毁。代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StarMove : MonoBehaviour
{
   
    
    void Update()
    {
        if (transform.position.x == -10 && transform.position.y == -10)
        {
            Destroy(gameObject);
        }
    }
}

4:添加控制流星产生的脚本

给摄像机添加一个脚本,命名为StarMannager.cs  ,改脚本主要用于控制流星预制体的产生,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class StarMannager : MonoBehaviour
{
    public GameObject starPrefab;
    float time=0.5f;
    float timer = 0;

   
    void Update()
    {
        //设置一个计时器
        timer += Time.deltaTime;
        if (timer<time)
        {
            return;
        }
        timer = 0;
        time = Random.Range(0, 5)*0.3f;
        //产生流星
        GameObject star = Instantiate(starPrefab);
        star.transform.position = new Vector3(Random.Range(10,30),Random.Range(10,30),0.2f);
    }
}

在此,所有需要设置的环节均已完成。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值