首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之挥动武器产生的剑痕特效(四十七)
2013
02-26

Unity3D研究院之挥动武器产生的剑痕特效(四十七)

雨松MOMO 最近超级忙,好久没写东西啦。前几天学习了一下如何实现剑痕特效。用公司的模型写例子不太好,所以我还是用以前那个小牛头人 嘿嘿。如下图所示,你懂得蛤蛤。

目前已知3种方法可以做这种剑痕特效

1.跟随特效

2.程序实现动态面来处理剑痕动画。

3.美术实现剑痕动画,直接坐在模型动画里面 (因为我不会美术所以这个忽略 嘿嘿)


Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 1

 

 

所谓剑痕特效就是跟随武器挥剑轨迹。那么我们需要在模型上找到武器挥剑轨迹的根节点。如下图所示,首先找到武器模型的根节点。如果你找不到就问问给你模型的美工,他肯定知道。

 

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 2

 

 

然后在创建一个空的对象”a”(随便起一个就行),挂在武器模型的下面。Transform的 Position 和 Rotation 都改成 0 0 0  Scale 都改成 1 1 1 。 

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 3

1.跟随特效

Unity自带了一个叫Trail Render的组件,就是跟随特效、它可以跟随无题移动产生拖尾的效果。然后使用Component ->Effects->Trail Render把拖尾组件添加至刚刚创建的空模型中。Time是一次跟随的时间,Start Width 和 End Width可以调节拖尾的宽度。

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 4

 

直接运行,怎么样?剑痕特效出来了吧?不过这样做的效果有点局限,因为武器在挥动的时候自身是会旋转的,然而这个粒子效果不会应用武器旋转的角度。它只是根据武器上的一个点始终保持跟随而已。我们需要的是不仅跟随还有和原模型保持同一个角度,所以我放弃了这种方式来制作剑痕。

 

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 5

 

 

2。通过程序来动态生成面来实现剑痕特效

原理的话大家可以看我以前写过的一篇文章  Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)

后来我发现在Unity AssetStort中有剑痕的免费例子,直接搜索Pocket RPG Weapon Trails 即可看到,下面我就来说说怎么把这个例子的剑痕特效快速加到你的工程中,把组件”a“重新改一下。

 

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 6

然后把AnimationController 绑定在需要播放剑痕特效的模型上,在写一条测试脚本Test.cs。

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 7

 

Test.cs

 另外,记得一定要修改动态网格的坐标,在本例就是对象 “a”。修改的时候你可以按帧来播放游戏(快捷键Command + shift + p ),直到向下面这样,剑痕网面的角度始终跟对武器。不同的模型可能角度会有点不同,这里需要调一调。

 

Unity3D研究院之挥动武器产生的剑痕特效(四十七) - 雨松MOMO程序研究院 - 8

 

还有Unity4增加了新的动画系统,此时你在把老的模型动画托放在工程中会发现已经不是Animation组件了, 而是Animator 。用以前的方法是播放不了动画的,除非手动修改一下模型的类型为 Rig -> Legacy 、但是如果你的模型和动画非常的多,程序绝对不能手动的一个一个来修改。所以我写了下面这个简单的脚本,当模型拖入Project视图时自动修改类型。把下面脚本放在Project视图 Editor文件夹下,没有的话创建一个即可。

 

最后是本文的代码,希望大家喜欢,嘿嘿 

下载地址: http://vdisk.weibo.com/s/rQrIe

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之挥动武器产生的剑痕特效(四十七)》有 52 条评论

  1. 村长 说:

    挂有 Trail Renderer 的Game Object 移动出摄像机剪裁框的时候,Trail 不渲染了, 请问大神有什么办法能让Trail 一直渲染吗

  2. W1nd 说:

    能具体给个脚本吗,新手不太会改。。谢谢!

  3. 墨月轻尘 说:

    求助,你有相关的插件不?我现在就遇到了帧数不足的情况QAQ

  4. 韩君松 说:

    Unity自带的那个拖尾效果有时候让人很无奈啊!比如我创建一个炮弹,一个炮弹池管理炮弹,好处是如果炮弹可以重复利用,然后问题就来了:炮弹上面带了拖尾效果,当炮弹击中目标之后需要把炮弹隐藏掉,以便重复利用。但是当我在调用前一帧被隐藏掉的炮弹的时候,需要将炮弹移动到新的位置,问题就在这里,当我再将炮弹显示出来的时候炮弹后面拉了一条长长的尾巴。。。从被隐藏位置到新的位置之间一条标新立异的尾巴!!!!最后不得不放弃用自带的拖尾,自己写了一个TrailRenderer。

  5. 偏不说啊 说:

    松爷,animator组件不知道可不可以使用啊 照你的说法我理解的是只有老动画系统才能用 希望松爷能给我科普一下

  6. 邓庆华 说:

    雨松老师好!我下载了您的牛头人模型,然后我希望通过 CharacterController 组件的Move()来控制它的运动,但是,我给它加了 CharacterController组件后,同时给该动画增加了如下脚本:CharacterController controller;void Start() { controller = GetComponent();}void Update() { controller.Move(Vector.forward);}但是,模型并没有移动。请问,这可能是什么原因导致的呢?

留下一个回复

你的email不会被公开。