【游戏开发者中心】是insideria重磅推出的全新栏目,不仅有大量与游戏开发相关的文章教程,而且收藏了许多新颖、易用、有趣的游戏特效素材与功能插件,并配有视频讲解。同时还为刚入门的新同学提供了丰富的免费教学视频。希望大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。
更多精彩内容请关注:www.insideria.cn
Pocket RPG Weapon Trails 武器拖尾效果
素材下载地址:https://www.insideria.cn/page/ChaJian
效果:
由于这个插件提供的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.
即只需要调用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提供的材质,设置好如下图所示:
修改TestMyTrail.cs代码为如下:
public WeaponTrail myTrail;
private float t = 0.033f;
private float tempT = 0;
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 (myTrail.time > 0)
{
myTrail.Itterate(Time.time - t + tempT);
}
else
{
myTrail.ClearTrail();
}
}
tempT -= t;
if (myTrail.time > 0)
{
myTrail.UpdateTrail(Time.time, t);
}
}
}
{
if (GUI.Button(new Rect(0, 0, 50, 50), "攻击"))
{
}
}
}
将Trail对象赋给My Trail属性,如下图所示:
现在运行,可以看到休闲状态时,武器拖尾的若隐若现,如下图所示:
攻击时的效果:
要调整好Trail对象的位置、旋转等,尽量贴合武器,设置拖尾的高度,尽量与武器同长度,才能产生较好的效果。当攻击结束,武器往回收的时候,也会有拖尾,如下图所示:
如果要去掉这个时候的拖尾,可以采用更精确的控制拖尾的出现。选中攻击动作,切换到"Animations",播放动作,在攻击开始时刻,添加一个事件,如下图所示:
在攻击完毕,也添加一个事件,如下图所示:
{
// 默认没有拖尾效果
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()
{
//清除拖尾
}
现在运行,就会发现休闲状态时候,不会有拖尾效果,当进行攻击时,拖尾只在相应的时间点进行出现,如下图所示:
武器回收的时候,也不会有拖尾了,如下图所示:
参考资料 : Unity3D研究院之挥动武器产生的剑痕特效(四十七)
http://www.xuanyusong.com/archives/2110
今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路~请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。
快去InsideRIA下载好项目!
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.