Unity Asset(1)Pocket RPG Weapon Trails 武器拖尾效果

Unity Asset(1)Pocket RPG Weapon Trails 武器拖尾效果

只需要调用Itterate和UpdateTrail方法。下面使用另外的角色模型进行测试拖尾效果。

首先,在Animator窗口,创建休闲idle状态和攻击attack状态,设置它们相应的Motion,设置从idle到attack的动画参数为Attack,类型为Trigger。

Speed属性可以控制当前状态动作的速度。接着,创建个脚本TestMyTrail.cs附加到角色上,脚本代码如下:

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提供的材质。

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


修改TestMyTrail.cs代码为如下:

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

现在运行,就会发现休闲状态时候,不会有拖尾效果,当进行攻击时,拖尾只在相应的时间点进行出现。


转载于:
http://blog.csdn.net/akof1314/article/details/37603559


你可能感兴趣的:(Unity Asset(1)Pocket RPG Weapon Trails 武器拖尾效果)