赞
踩
今天到家吃完饭,突然想敲代码……不知道怎么会有这种想法.
打开了尘封了多年的项目,那是在学校跟几个朋友一起合作写的MOBA类型的游戏,想起了当年的热血,也准备在工作之余重新开启这个项目,这些都是题外话,项目中有刀光残影的效果,是使用的一个叫《PocketRPGTrails》的插件,效果还是不错的,不过插件说明和案例都是用的animation组件,那么animator下怎么使用呢?
unity残影拖尾插件PocketRPGTrails
下载地址:http://pan.baidu.com/s/1i3kq5V3
首先,插件中提供的AnimationController脚本就不能使用了,需要我们自己写一个Trail脚本。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using
UnityEngine;
using
System.Collections;
public
class
Trail : MonoBehaviour {
public
WeaponTrail TrailObj;
//武器柄的节点
private
float
t = 0f;
private
float
tempT = 0f;
private
float
animationIncrement = 0.003f;
void
Start () {}
void
LateUpdate()
{
t = Mathf.Clamp(Time.deltaTime, 0, 0.066f);
if
(t > 0)
{
while
(tempT < t)
{
tempT += animationIncrement;
if
(TrailObj.time > 0)
{
TrailObj.Itterate(Time.time - t + tempT);
}
else
{
TrailObj.ClearTrail();
}
}
tempT -= t;
if
(TrailObj.time > 0)
{
TrailObj.UpdateTrail(Time.time, t);
}
}
}
}
|
把这个脚本add到你角色的节点上,如下图:
再找到你模型挂武器的武器节点,比如说右手拿武器,那就找到右手这个骨骼的节点,反正最好是武器把手的位置。
如下图:
注意:一定一定是骨骼的节点,或者自己在他的节点下新建一个节点。
武器把手的节点add上插件提供的“WeaponTrail”脚本。
除了WeaponTrail脚本外,节点上必须包含的组件如下图:
注意:记得注意shader是否选择的是Paiticles/Additive!并且图片选择的是Assets/PocketRPG Trails/Prefabs/Effects/Attacks/weaponTrail02,不是不能改,而是以我们程序员的审美,可能会自己改的很丑,或者说是我的审美很差。。。直接用插件提供的效果就已经很不错~所以最好不要改拉~
最后把这个节点拖到我们Trail脚本的TrailObj属性上,如下图:
加上自己的Animator,运行并播放攻击动画看一下效果~
注意:适当的调整一下武器把手的节点上的“WeaponTrail”脚本的属性,比如把Height调整成真正角色武器的长度、Time刀光残影残留时间等等的属性自己调整一下,调的好看一点~
看上面的gif会发现角色在移动和武器收回的过程中都带有拖尾效果,虽然挺炫,但是不符合常理,我们怎么样只有攻击过程中有残影,并且收回武器的时候没有残影呢?那还要改一下我们的Trail脚本,并且添加动画事件。先说Trail脚本。
在Start()函数中先把残影关掉
增加开启残影函数(用于动画关键帧调用)
增加关闭残影函数(用于动画关键帧调用)
Trail更改后如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
using
UnityEngine;
using
System.Collections;
public
class
Trail : MonoBehaviour {
public
WeaponTrail TrailObj;
private
float
t = 0f;
private
float
tempT = 0f;
private
float
animationIncrement = 0.003f;
void
Start ()
{
//先把残影关掉
TrailObj.SetTime(0.0f, 0.0f, 1.0f);
}
public
void
TrailStart()
{
//设置拖尾时长
TrailObj.SetTime(2.0f, 0.0f, 1.0f);
//开始进行拖尾
TrailObj.StartTrail(0.5f, 0.4f);
}
public
void
TrailStop()
{
//清除拖尾
TrailObj.ClearTrail();
}
void
LateUpdate()
{
t = Mathf.Clamp(Time.deltaTime, 0, 0.066f);
if
(t > 0)
{
while
(tempT < t)
{
tempT += animationIncrement;
if
(TrailObj.time > 0)
{
TrailObj.Itterate(Time.time - t + tempT);
}
else
{
TrailObj.ClearTrail();
}
}
tempT -= t;
if
(TrailObj.time > 0)
{
TrailObj.UpdateTrail(Time.time, t);
}
}
}
}
|
然后找到攻击动画,找到自己觉得应该出现残影的那一帧,添加一个事件。
如我的攻击动画第一帧,添加上一个事件,
如何添加动画关键帧:怎么预览动画肯定知道吧,点击Events下的按钮,就是在当前预览的动画暂停的那一帧上添加一个事件。
弹出来的窗口Object选择 Trail脚本,Function写上"TrailStart"。这样就是当动画播放到这一帧的时候,会自动调用这个函数开启残影。如下图:
那么结束就应该是找到结束的那一帧添加一个事件,调用TrailStop函数。这里就不写、也不放图了。
一些细节就看自己慢慢调了~
我们的MOBA里面的效果:
有任何问题直接留言或者微博或者qq都可以~及时解答大家问题~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。