Unity插件篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解读以及基本用法

版权声明:转载请注明出处!不注明也无所谓,嘿嘿。 https://blog.csdn.net/qq_15020543/article/details/82811070

我们平时开发游戏,有时会想要实现武器拖影特效,就像这样。

这个双刀流的小老头已经很全面的诠释了什么是武器拖尾。其实Unity自带了拖尾组件

但他有很大的局限性,当目标仅进行移动,转弯的时候,它是可以胜任的,但是,当物体本身发生旋转的时候,他还是会像之前那样,只是单纯的跟随transform.position进行更新。下面是个例子。

****************************************************************************************************************************************

我们让物体自转(绕Z轴)

但是我们会发现,虽然物体一直在自转,但是他的拖尾并没有跟着转,这并不是我们想要的,所以PASS。

如果真有小伙伴需要这种简单的拖尾,那就去百度学习一下这个组件,很简单。

****************************************************************************************************************************************

下面是我们今天的主角。Pocket RPG Weapon Trails。下面给出下载链接。

扫描二维码关注公众号,回复: 3417239 查看本文章

https://pan.baidu.com/s/1CnvzvFlQH2-X6u6yL1N2eA

首先介绍一下Pocket RPG Weapon Trails这个插件,它的原理是每帧计算Mesh Renderer来更精确让特效贴合武器。

我们先来看一下他的文档。

大致是这个意思。

先看WeaponTrail

其中有几个重要的方法,在开始说这几个方法之前,先说明一下里面几个重要变量。

1.desiredTime:表示想要让拖尾持续的时间(与time密切相关)

2.time:表示拖尾从开始出现到完全消失所用的时间(总是在向desiredTime靠近)

3.timeTransitionSpeed:与time成正比,与fadeTime(在几秒内渐隐)成反比

在每帧的更新里有这样一段代码

下面是方法:

1.StartTrail激活拖尾特效,并将一直处于激活状态。如果timeToTweenTo不等于desirdTime(默认值为2),time将一直向desiredTime靠近,靠近速度取决于timeTransitionSpeed。

2.SetTime设置拖尾特效的总持续时间。(一般的我们使用这个方法控制拖尾特效的持续时间,所以我们一般把第二个参数设为0,但是还是看个人需求来),它将以tweenSpeed的速度靠近_deriredTime的值。

3.去除拖尾特效。

我个人感觉以上第一个和第二个方法可以灵活的选择使用。

然后是实现方法,有两种方法

第一种是不使用AnimatorController

(参考https://blog.csdn.net/akof1314/article/details/37603559

using UnityEngine;
using System.Collections;

public class TestMyTrail : MonoBehaviour {

    public WeaponTrail myTrail;
    private float t = 0.033f;
    private float tempT = 0;
    private float animationIncrement = 0.003f;

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


}

第二种使用AnimatorController

(参考http://www.xuanyusong.com/archives/2110

让我们最后看看效果,这样就实现了武器的拖尾效果。

总结:其实插件的学习,首先是要看插件的代码,插件的官方案例已经非常细腻,能够学到很多东西。然后才是别人的博客,这样提升会很快。祝大家天天进步!

猜你喜欢

转载自blog.csdn.net/qq_15020543/article/details/82811070
RPG