从愤怒的小鸟来看Unity武器拖尾的特效优化

目录

前言

素材下载

介绍

官方文档

不添加拖尾的效果

添加拖尾

代码控制拖尾生成

拖尾排序问题

效果

修改拖尾高度和存活时间

效果

待机时无拖尾

效果

参考


前言

在游戏开发过程中,我们经常需要为武器添加拖尾特效,效果如下所示

Unity 自带的拖尾组件虽然能满足基本需求,但在使用中存在明显局限性:当目标仅进行移动或转弯时表现尚可,一旦物体本身发生旋转,它仍会机械地跟随 transform.position 更新。为此,我们推荐使用 Pocket RPG Weapon Trails 这款武器拖尾特效插件。该插件的优势在于通过每帧计算 Mesh Renderer 数据,使特效能够精确贴合武器运动轨迹。

素材下载

Asset Store地址: The Best Assets for Game Making | Unity Asset Store

介绍

官方文档

主要变量说明:

  • desiredTime:控制拖尾效果的期望持续时间(与time参数直接相关)
  • time:记录拖尾从出现到完全消失的实际持续时间(会不断向desiredTime趋近)
  • timeTransitionSpeed:与time成正比,与fadeTime(渐隐时长)成反比

应用示例: 3D场景中有众多应用案例,这里不再展开;2D场景可参考《愤怒的小鸟》等游戏的具体实现。

不添加拖尾的效果

添加拖尾

为小鸟添加一个名为"Trail"的子对象,并执行以下配置:

  1. 附加WeaponTrail.cs脚本
  2. 添加Mesh Renderer组件
  3. 使用Pocket RPG Trails资源包中的"WeaponTrail"材质
  4. 按图示完成参数设置

代码控制拖尾生成

新增 TestMyTrail.cs代码为如下:

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方法来显示拖尾效果。

cs 复制代码
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();
}

效果

参考

Unity3D武器拖尾效果-CSDN博客

Unity插件篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解读以及基本用法_unity刀光拖尾插件-CSDN博客

相关推荐
丁小未3 分钟前
Unity车机地图Tile流式渲染系统高性能架构方案
unity·架构·ecs·dots·车机系统·车机系统架构图
笨鸟先飞的橘猫4 分钟前
游戏后端分布式学习——消息队列在游戏的用法
分布式·学习·游戏
网站优化(SEO)专家2 小时前
Pokicon免费游戏入口网站流量稳定增长的核心密码
游戏·游戏网站·网站流量·游戏宣传
沃普天科技2 小时前
IF8032芯片TYPE C全功能输出支持C口显示器,支持AR眼镜 显示,支持接扩展坞,采集卡,游戏手柄,支持PD100W 4K240HZ
游戏·计算机外设·ar
LONGZETECH4 小时前
工业实训仿真设计实践:电机拆装软件的 DAG 流程建模、工具精度分级与数据体系搭建
大数据·算法·unity·架构·汽车
EanoJiang4 小时前
ControlRig_C++_自定义节点内调用其他节点模板
游戏
2601_962924766 小时前
归环帕塔玩法全解析 归环帕塔怎么玩
游戏·电脑
qizayaoshuap6 小时前
# HarmonyOS ArkTS 记忆翻牌游戏深度解析 —— Fisher-Yates 洗牌与翻牌匹配机制
游戏·华为·harmonyos
派葛穆20 小时前
Unity-UI 按钮点击弹窗功能
unity·游戏引擎
toponad1 天前
Unity Ads Bidding 现已正式加入TopOn 聚合平台
unity·topon