目录
前言
素材下载
介绍
官方文档
不添加拖尾的效果
添加拖尾
代码控制拖尾生成
拖尾排序问题
效果
修改拖尾高度和存活时间
效果
待机时无拖尾
效果
参考
前言
在游戏开发过程中,我们经常需要为武器添加拖尾特效,效果如下所示
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"的子对象,并执行以下配置:
- 附加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();
}
效果
参考
Unity3D武器拖尾效果-CSDN博客
Unity插件篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解读以及基本用法_unity刀光拖尾插件-CSDN博客