雨松MOMO 最近超级忙,好久没写东西啦。前几天学习了一下如何实现剑痕特效。用公司的模型写例子不太好,所以我还是用以前那个小牛头人 嘿嘿。如下图所示,你懂得蛤蛤。
目前已知3种方法可以做这种剑痕特效
1.跟随特效
2.程序实现动态面来处理剑痕动画。
3.美术实现剑痕动画,直接坐在模型动画里面 (因为我不会美术所以这个忽略 嘿嘿)
所谓剑痕特效就是跟随武器挥剑轨迹。那么我们需要在模型上找到武器挥剑轨迹的根节点。如下图所示,首先找到武器模型的根节点。如果你找不到就问问给你模型的美工,他肯定知道。
然后在创建一个空的对象”a”(随便起一个就行),挂在武器模型的下面。Transform的 Position 和 Rotation 都改成 0 0 0 Scale 都改成 1 1 1 。
1.跟随特效
Unity自带了一个叫Trail Render的组件,就是跟随特效、它可以跟随无题移动产生拖尾的效果。然后使用Component ->Effects->Trail Render把拖尾组件添加至刚刚创建的空模型中。Time是一次跟随的时间,Start Width 和 End Width可以调节拖尾的宽度。
直接运行,怎么样?剑痕特效出来了吧?不过这样做的效果有点局限,因为武器在挥动的时候自身是会旋转的,然而这个粒子效果不会应用武器旋转的角度。它只是根据武器上的一个点始终保持跟随而已。我们需要的是不仅跟随还有和原模型保持同一个角度,所以我放弃了这种方式来制作剑痕。
2。通过程序来动态生成面来实现剑痕特效
原理的话大家可以看我以前写过的一篇文章 Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)
后来我发现在Unity AssetStort中有剑痕的免费例子,直接搜索Pocket RPG Weapon Trails 即可看到,下面我就来说说怎么把这个例子的剑痕特效快速加到你的工程中,把组件”a“重新改一下。
然后把AnimationController 绑定在需要播放剑痕特效的模型上,在写一条测试脚本Test.cs。
Test.cs
using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
public WeaponTrail a;
protected AnimationController animationController;
void Start ()
{
animationController = GetComponent<AnimationController> ();
animationController.AddTrail (a);
//设置拖尾时间
a.StartTrail(0.5f, 0.4f);
//设置播放时间
a.SetTime (0.5f, 0.2f, 0.2f);
animation.Play();
}
}
另外,记得一定要修改动态网格的坐标,在本例就是对象 “a”。修改的时候你可以按帧来播放游戏(快捷键Command + shift + p ),直到向下面这样,剑痕网面的角度始终跟对武器。不同的模型可能角度会有点不同,这里需要调一调。
还有Unity4增加了新的动画系统,此时你在把老的模型动画托放在工程中会发现已经不是Animation组件了, 而是Animator 。用以前的方法是播放不了动画的,除非手动修改一下模型的类型为 Rig -> Legacy 、但是如果你的模型和动画非常的多,程序绝对不能手动的一个一个来修改。所以我写了下面这个简单的脚本,当模型拖入Project视图时自动修改类型。把下面脚本放在Project视图 Editor文件夹下,没有的话创建一个即可。
using UnityEditor;
public class EditA : AssetPostprocessor
{
public void OnPreprocessModel()
{
ModelImporter modelImporter = (ModelImporter) assetImporter;
//这里是模型的缩放比例,默认为0.01 这里我改成了1
modelImporter.globalScale = 1f;
//这里修改模型类型
modelImporter.animationType = ModelImporterAnimationType.Legacy;
}
}
最后是本文的代码,希望大家喜欢,嘿嘿
下载地址: http://vdisk.weibo.com/s/rQrIe
- 本文固定链接: https://www.xuanyusong.com/archives/2110
- 转载请注明: 雨松MOMO于 雨松MOMO程序研究院 发表









WeaponTrails 里有个一always up选项,勾选了之后x轴才会垂直于拖尾的平面,现在你的代码无法控制这个,默认就是x轴垂直于拖尾平面,如果这样那在做剑圣风暴这种的拖尾的时候,手动调整的效果的时候在轨迹在与x轴相交的点拖尾宽度会逐渐缩小到最小,然后再逐渐变回原有宽带。
受益匪浅!
我把Test.cs用js来写的,为什么 定义WeaponTrail总报The name ‘WeaponTrail’ does not denote a valid type (‘not found’). 呢?写法 var leftWeapon:WeaponTrail;
雨松大神,为了在新动画系统中用拖尾,我把那个免费的拖尾看了。吐槽一下其实AnimationController脚本完全可以无视,完全不需要还去把动画都改成以前的Animation。他只是负责调用Weapon Trails的更新方法,其实在自己的脚本里调用更新就醒了。顺便补充一下Weapon Trails脚本的方法些。调用Weapon Trails的UpdateTrail和Itterate(这个是动画播放中时候)方法就能使用了,2个都调用才会有效果。StartTrail方法是设置拖尾时间和从现阶段到达设置时间的速度。SetTime是设置当前拖尾时间,最终拖尾时间,以及速度。还有FadeOut方法是从现在开始淡出的感觉,调用他后他把拖尾时间设置为0了。然后参数是速度。还有ClearTrail是直接清空掉拖尾。如果调用过ClearTrail方法,那么FadeOut将不会有效。
MOMO老师写的真好
过奖了。。。
我去 我都没发现这里可以直接用百度登陆 =.=||
过奖了啊 ,, 你也是传说中的大神 呵呵 互相学习。。。
=.= 我是菜鸟…… 而且由于学业,好几个月都没有碰过unity了…… 呜呜呜
互相学习, 加油!! 呵呵
传说中的小屁孩大神
还有一些常用快捷键 处理缩进的 比如 “command [” ” command ]”
问个问题,monoDevelop中怎么样对代码进行格式化啊,就是像eclipse中那样能自动对齐啥的,每次都得手动调整很麻烦啊!
当然有的,, 编辑 -> format -> format document 格式所有代码。format selection 是格式化鼠标框选的代码
Error while importing package: Couldn’t decompress package….请教下要怎么解决这问题>.
你的路径中有中文吧。?
为什么我下了你的很多demo都出现解压失败问题啊,我unity版本是3.5.6f4
原来如此,感谢,持续关注中。。。。。。
怎么改呢,出现和楼主一样的问题了,所有的你的demo都打不开
需要unity4 ,unity3打开4的项目有问题。。
请问momo老师有用A Pathfinding Project Pro 这插件吗? 本人不大会用希望momo老师写这方面的教程>.<……
我没用过这个插件, 看名字像是寻路插件吧?? 可以用unity3d自带的寻路吗?
实时运算的拖尾特效受动作帧数影响特别严重,你会发现当你动作帧数不足的时候,拖尾断断续续的情况比较严重。可以做一个插件工具,录制拖尾特效在满帧时候的动画,根据游戏时间来配合动作播放,这样就可以做到拖尾和帧数解耦。 看起来非常圆润。
感谢你的回复。。
请问雨松大大水面、海面那种波浪效果怎么实现,求给个思路啊,感激不敬啊。
import package – > water( pro) 里面就有水面的效果, 你看看。。
你好,甚么我下载你的附件,导入会报错。。Fatal error!type = =kMetaAssetType & pathName.find(“library/metadata”)! = 0
这个是在unity4下面写的例子。 是应该是用unity3打开的吧。。 所以有这个错误啦。。
哦哦。谢谢了哈。原来如此。
我就懒得登陆了,我是扯蛋的风。留言只为赞一个╮(╯▽╰)╭
感谢支持蛤蛤。
赞有个毛用!! 多点广告
刚回北京,来看大作啦!!! 加油,加油!!!
恭喜回京。。蛤蛤
momo老师能否发文 详细解释一下 Unity4增加了新的动画系统到底有什么好呢????
unity4的动画 有两个两点1.模型公用骨骼2.可以预制动画。。官网上有详细的教程,
好吧 点击了 8次广告哦
感谢蛤蛤。。
momo 我现在想做 那种 一刀下去 把人劈成两块的那种效果 嘿嘿
让美术出动画吧。。
噢 心里是沙发哦!!!!!!!
蛤蛤 你就是沙发啦,。。
感谢雨松老师伟大的分享精神蛤,像这种特效的例子是很珍贵的。。。再次感谢。。。我第一个沙发。。。
烦死了 沙发被你占了