unity3d 武器拖尾效果_unity3d武器拖尾 - CSDN
  • Unity 武器拖尾效果

    2019-05-06 14:10:46
    Pocket RPG Weapon Trails 武器拖尾效果 Asset Store地址:https://www.assetstore.unity3d.com/en/#!/content/2458 CSDN资源地址:http://download.csdn.net/detail/akof1314/7610241 截图: 由于这个插件提供的...
    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(005050), "攻击"))
            {
                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, 00.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(005050), "攻击"))
            {
                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 
     


    ---------------------
    作者:无幻
    原文:https://blog.csdn.net/akof1314/article/details/37603559

    展开全文
  • PocketRPG的示例下载:... ----------------------------------------------------------------------------------------------------------------------------------------

    PocketRPG的示例下载:http://download.csdn.net/detail/xv_ly15/4999885

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    PocketRPG Trails的例子演示效果

    左刀挥动


    双刀效果



    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    说明:PocketRPG的例子中已经有实现拖尾效果的脚本及说明文档,我只是将自己实际使用时遇到的问题与使用步骤更详细的写下来。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    核心脚本


    WeaponTrail


    实现拖尾效果的脚本。

    参数:

    Height:拖尾效果的高度,对应武器的长度

    Time:拖尾效果残留事件

    Always Up:

    Min Distance:

    Time Transition Speed:

    Desired Time:

    Start Color:开始颜色

    End Color:结束时颜色


    使用(PocketRPG文档的ReadMe中有提及)

    1.Calling StartTrail(float timeToTweenTo, floatfadeInTime) andFadeOut(float fadeTime)will fade in and fade out the trail respectively.

    调用StartTrail和FadeOut函数去实现渐显示和渐消失的效果。时间参数以1秒为一个单位。

    2.Calling SetTime(float trailTime, floattimeToTweenTo, float tweenSpeed)can change the length of the trailinstantly, giving you a little more control.

    调用SetTime函数去改变拖尾长度

    3.The WeaponTrail can be built by callingItterate(float itterateTime) andUpdateTrail(floatcurrentTime, float deltaTime). These functions are called byAnimationController, however if you don't want to use AnimationController youcan call these yourself.

    调用Itterate和Update函数去更新拖尾效果,目前还不明白这两个函数的参数怎样添好,幸运的是,PocketRpg的开发者做了AnimationController脚本去代替我们调用这两个函数使拖尾效果更好。



    AnimationController

    控制动作,使拖尾效果更好

    参数:

    Gather Delta Time Automatic:


    使用

    1.调用AddTrail函数去添加受影响的WeapontTrail对象。

    2.调用PlayAnimation函数去切换动作。



    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    应用:

    模型:天堂的剑士(网上下载的)

    动作:攻击和休息


    模型包:http://download.csdn.net/detail/xv_ly15/5001911


    导入模型包后,能在Unity编辑器下看到Player和Texture两个文件夹。



    在player目录下能看到各个动作包。

    用Attack和Rest做武器拖尾效果演示。

    将Attack拖到场景中


    添加AnimationController脚本

    添加AnimationController脚本,对象已带有Attack动作,再通过Rest对象添加Rest动作。


    添加WeaponTrail脚本

    找到需要添加拖尾效果的GameObject,添加Trail对象用于实现拖尾效果


    Trail添加必须的Mesh Filter,Mesh Render,拖尾材质还是使用PocketRPG自带的刀光材质。


    使AnimationController和WeaponTrail生效

    新建一个脚本,假设命名为ChangeAnim用于改变动作并控制拖尾效果。与AnimationController同一等级赋到GameObject上。在上面添加AnimationContoller的图片中能看到。


    在ChangeAnim下生命如下四个成员变量

        //带有WeaponTrail的对象
        public WeaponTrail trail;
        //攻击动作
        private AnimationState animAtk;
        //休息动作
        private AnimationState animRest;
        //动作控制脚本
        private AnimationController animCtl;


    声明后将Trail对象拖到该脚本使用的Trail中,同样在上面添加AnimationController的图片中能看到。

    在Start函数中添加如下代码

            //获取动作控制脚本
            animCtl = gameObject.GetComponent<AnimationController>();


            //获得攻击和休息动作
            animAtk = animation["attack"];
            animRest = animation["rest"];


            //添加受动作控制脚本的拖尾对象
            animCtl.AddTrail(trail);


    在Update函数添加如下代码,响应A,B按钮控制动作

            if (Input.GetKeyDown(KeyCode.A))
            {
                //播放攻击动画并打开拖尾效果
                animCtl.PlayAnimation(animAtk);
                trail.StartTrail(0.5f, 0.4f);
                
            }
            else if (Input.GetKeyDown(KeyCode.B))
            {

       //播放休息动画
                animCtl.PlayAnimation(animRest);

                //渐消失
                trail.FadeOut(0.5f);  
            }


    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    效果

    展开全文
  • Pocket RPG Weapon Trails 武器拖尾效果Asset Store地址:https://www.assetstore.unity3d.com/en/#!/content/2458CSDN资源地址:http://download.csdn.net/detail/akof1314/7610241截图:由于这个插件提供的...
    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(005050), "攻击"))
            {
                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, 00.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(005050), "攻击"))
            {
                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 

    展开全文
  • Unity 拖尾效果插件Pocket RPG Weapon Trails  http://blog.csdn.net/akof1314/article/details/37603559 注意调节拖尾的位置和角度 Height(与武器长度相关) 尽量贴合武器

    Unity 拖尾效果插件Pocket RPG Weapon Trails 


    http://blog.csdn.net/akof1314/article/details/37603559


    注意调节拖尾的位置和角度 Height(与武器长度相关) 尽量贴合武器

    展开全文
  • using UnityEngine; using System.Collections; using System.Collections.Generic; //内部类 用于存储每帧光效点信息 class Wp { public Vector3 point; public Vector3 upDir; public float time;... public W
  • 基于前一篇的基础上做优化:Unity Shader - GrabPass 实现武器热扭曲拖尾效果 而GrabPass在单次DC没有Finish时,就去GPU取其他BUFF的信息,会比较慢,具体不知道GPU的工作原理(日后慢慢不上GPU结构与工作原理方式)...
  • Unity挥剑拖尾效果

    2014-12-23 14:49:55
    角色挥剑时让挥剑动作有拖尾效果,如下所示 第一步:找到武器模型的根节点,创建一个空的对象“aaa”,挂在武器模型下面,Transform的Position和Rotation根据情况自己设置   第二步:选中“aaa” ...
  • There are two scripts required to get Pocket RPG Weapon ...要使武器拖尾运作需要两个脚本。 WeaponTrail.cs AnimationController.cs You will also need another script that calls AnimationController and
  • 战士的武器在甩动过程中会有扭曲拖尾。 自己测试项目中想给武器也添加这效果,所以顺便学习以下。 先来看看效果 还可以给拖尾添加着色、亮度、和一些扭曲强度的参数设置。 实现思路 生成拖尾网格 编写热扭曲...
1 2 3 4 5
收藏数 91
精华内容 36
热门标签
关键字:

unity3d 武器拖尾效果