【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)

简介: 【推荐100个unity插件之19】武器拖尾特效插件——Pocket RPG Weapon Trails(2d 3d通用)

前言

我们平时开发游戏,有时会想要实现武器拖尾特效,就像这样。

其实Unity自带了拖尾组件,但他有很大的局限性,当目标仅进行移动,转弯的时候,它是可以胜任的,但是,当物体本身发生旋转的时候,他还是会像之前那样,只是单纯的跟随transform.position进行更新。这里就需要介绍今天推荐的武器拖尾特效插件 —— Pocket RPG Weapon Trails。它的原理是每帧计算Mesh Renderer来更精确让特效贴合武器。

素材下载

Asset Store地址: https://www.assetstore.unity3d.com/en/#!/content/2458

介绍

我们先来看一下他的文档。

这里说几个重要的变量

  1. desiredTime:表示想要让拖尾持续的时间(与time密切相关)
  2. time:表示拖尾从开始出现到完全消失所用的时间(总是在向desiredTime靠近)
  3. timeTransitionSpeed:与time成正比,与fadeTime(在几秒内渐隐)成反比

使用例子

3d的例子有很多,比如:https://blog.csdn.net/akof1314/article/details/37603559

这里我就举一个2d中的使用例子,在我之前做的项目:【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》,实现小鸟发射的拖尾效果

不添加拖尾的效果

添加拖尾

给小鸟添加一个子对象,命名为 Trail,并为其添加 WeaponTrail.cs脚本、 Mesh Renderer组件,材质为Pocket RPG Trails提供的材质(WeaponTrail),设置好如下图所示:


代码控制拖尾生成

新增 TestMyTrail.cs代码为如下:

public class TestMyTrail : MonoBehaviour
{
    public WeaponTrail myTrail;

    private float t = 0.033f;
    private float tempT = 0;
    private float animationIncrement = 0.003f;

    void LateUpdate()
    {
        t = Mathf.Clamp(Time.deltaTime, 0, 0.066f);

        if (t > 0)
        {
            while (tempT < t)
            {
                tempT += animationIncrement;

                if (myTrail.time > 0)
                {
                    myTrail.Itterate(Time.time - t + tempT);
                }
                else
                {
                    myTrail.ClearTrail();
                }
            }

            tempT -= t;

            if (myTrail.time > 0)
            {
                myTrail.UpdateTrail(Time.time, t);
            }
        }
    }
}

挂载在小鸟身上

拖尾排序问题

如果你跟我一样,背景和小鸟使用了不同的排序,那么大概率你的拖尾会被遮挡,可以添加sort group组件修改拖尾的排序

效果

修改拖尾高度和存活时间

效果

待机时无拖尾

我们要实现待机时无拖尾,需要更精确的控制拖尾的出现和消失,修改 TestMyTrail.cs 代码为如下,在小鸟发射时调用heroAttack显示拖尾

void Start()
{
    // 默认没有拖尾效果
    myTrail.SetTime(0.0f, 0.0f, 1.0f);
}

//显示拖尾
public  void heroAttack()
{
     //设置拖尾时长
    myTrail.SetTime( 2.0f,  0.0f,  1.0f);
     //开始进行拖尾
    myTrail.StartTrail( 0.5f,  0.4f);
}

//隐藏拖尾
 public  void heroIdle()
{
     //清除拖尾
    myTrail.ClearTrail();
}

//。。。

效果

参考

https://blog.csdn.net/akof1314/article/details/37603559

https://blog.csdn.net/qq_15020543/article/details/82811070

目录
相关文章
|
9天前
|
Rust 图形学
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
【unity实战】使用unity制作一个类似Rust的3D生存建造建筑系统,具有很好的吸附性(附项目源码)
15 1
|
9天前
|
数据可视化 大数据 API
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用
10 0
|
9天前
|
自然语言处理 搜索推荐 API
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
20 0
|
9天前
|
JSON 开发框架 API
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
【推荐100个unity插件之20】一个强大的JSON处理库——Newtonsoft.Json(也称为Json.NET)
15 0
|
9天前
|
数据可视化 C# 图形学
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
10 0
|
9天前
|
图形学
【unity实战】3D水系统,游泳,潜水,钓鱼功能实现
【unity实战】3D水系统,游泳,潜水,钓鱼功能实现
6 0
|
9天前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
22 0
|
9天前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
18 2
|
9天前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
19 2
|
9天前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
10 0