Unity 武器拖尾效果

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               
Pocket RPG Weapon Trails 武器拖尾效果
截图:



由于这个插件提供的 AnimationController.cs仅对 Animation动画进行支持,对 Animator动画支持的话需要自己实现。文档上说明实现的方式:
  • The WeaponTrail can be built by calling Itterate(float itterateTime) and UpdateTrail(float currentTime, float deltaTime). These functions are called by AnimationController, however if you don't want to use AnimationController you can call these yourself.
即只需要调用 ItterateUpdateTrail方法。下面使用另外的角色模型进行测试拖尾效果。

测试角色的模型包: https://www.assetstore.unity3d.com/en/#!/content/15103
CSDN资源地址: http://download.csdn.net/detail/akof1314/7610385
首先,在 Animator窗口,创建休闲 idle状态和攻击 attack状态,设置它们相应的Motion,设置从idle到attack的动画参数为 Attack,类型为 Trigger,如下图所示:


Speed属性可以控制当前状态动作的速度。接着,创建个脚本 TestMyTrail.cs附加到角色上,脚本代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;
using System.Collections;

public  class TestMyTrail : MonoBehaviour {

     private Animator animator;

     void Start () {
        animator = GetComponent<Animator>();
    }

     void OnGUI()
    {
         if (GUI.Button( new Rect( 0,  0,  50,  50),  "攻击"))
        {
            animator.SetTrigger( "Attack");
        }
    }
}
运行,可以看到默认角色是休闲状态,点击按钮是攻击状态,如下图所示:

查看模型,可以看到武器是绑在右手上的,如下图所示:

给 武器(Object003)添加一个子对象,命名为 Trail,为其添加 WeaponTrail.cs脚本、 Mesh Renderer组件,材质为Pocket RPG Trails提供的材质,设置好如下图所示:

修改 TestMyTrail.cs代码为如下:
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
50
51
52
53
54
using UnityEngine;
using System.Collections;

public  class TestMyTrail : MonoBehaviour {

     public WeaponTrail myTrail;

     private Animator animator;
     private  float t =  0.033f;
     private  float tempT =  0;
     private  float animationIncrement =  0.003f;

     void Start () 
    {
        animator = GetComponent<Animator>();
    }

     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);
            }
        }
    }

     void OnGUI()
    {
         if (GUI.Button( new Rect( 0,  0,  50,  50),  "攻击"))
        {
            animator.SetTrigger( "Attack");
        }
    }
}
Trail对象赋给 My Trail属性,如下图所示:

现在运行,可以看到休闲状态时,武器拖尾的若隐若现,如下图所示:

攻击时的效果:

要调整好 Trail对象的位置、旋转等,尽量贴合武器,设置拖尾的高度,尽量与武器同长度,才能产生较好的效果。当攻击结束,武器往回收的时候,也会有拖尾,如下图所示:

如果要去掉这个时候的拖尾,可以采用更精确的控制拖尾的出现。选中攻击动作,切换到" Animations",播放动作,在攻击开始时刻,添加一个事件,如下图所示:

在攻击完毕,也添加一个事件,如下图所示:

点击" Apply"进行应用。修改 TestMyTrail.cs 代码为如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
     void Start () 
    {
        animator = GetComponent<Animator>();
         // 默认没有拖尾效果
        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();
    }
现在运行,就会发现休闲状态时候,不会有拖尾效果,当进行攻击时,拖尾只在相应的时间点进行出现,如下图所示:

武器回收的时候,也不会有拖尾了,如下图所示:


参考资料:
1.Unity3D 武器拖尾效果(刀光) 使用PocketRPG Trails  http://blog.csdn.net/xv_ly15/article/details/8509781
2.Unity3D研究院之挥动武器产生的剑痕特效(四十七)  http://www.xuanyusong.com/archives/2110  

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值