大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei

我实在不明确有的人为什么不喜欢武侠/仙侠类游戏,也许是因为武侠/仙侠类游戏身上被永远烙上的国产标签吧!博主近期在玩一部叫做《雨血》的游戏,博主不禁感慨:在这样一个流星蝴蝶不再闪烁、网游成风、国产双剑兴许创新不足的后国产时代,竟然还能够有这样一部再次让博主热血沸腾的游戏。博主最早接触过的游戏是《流星蝴蝶剑》,因为这部游戏的上手难度本身非常高,所以博主基本上没有通关过,如今偶尔拿出来一个人怀念一下。据说《雨血》系列堪称第一部走出国门的国产RPG,博主一直有一个梦想,就是有一天我们能够用RPG来演绎中国古代最为绚丽夺目的文学经典《西游记》。博主是一个相对传统的人,喜欢中国的传统文化,所以对于国外的文化找不到一种归属感,我实在没有认为国外游戏中的魔法会比中国的仙术、武功、五行、暗器、蛊术来得简单。假设说仙剑、古剑是仙侠背景下的武侠,轩辕剑是历史背景下的武侠,那么《血雨》就是古龙武侠风格下的武侠。博主非常喜欢这种画风,因为每个画面都让人认为这是在赞赏一件艺术品,我们来看几张图片吧:

能够看到,在这部游戏中,前两部是半即时制RPG,第三部则全然是即时制RPG。博主尤其喜欢这部游戏的配乐,整个配乐大气磅礴,一招一式都有不错的打击感,并且武器的特效十分华丽。那么,到这里,就到了我们今天的主题:刀光剑影特效的制作。我们今天选择的PacketRPG插件,这个插件能够帮助我们高速地实现武器拖尾特效。好,以下我们開始:

首先我们打开Unity3D、导入PocketRPG Trails。使用这个插件,我们首先要做的是须要和美工交流,以获得模型中武器的确切位置。假设不知道武器的确切位置,建议大家还是和博主一样使用这个插件自带的模型吧。好,首先我们在项目中找到这个模型:

以下我们将模型拖到场景中,展开模型,发现以下的结构:

我们展开到left_hand_joint这是左手的关节,能够发现它的以下有两个节点,第一个是手指,第二个我们将其改名为Left_Weapon,这就是我们左手武器的位置,我们在它的以下创建一个LeftWeaponTrail,这是用来显示我们特效的组件,我们为其加入WeaponTrail脚本:

完毕该脚本的加入后,我们为其加入Mesh Renderer,选择特效材质,这里我们选择PocketRPG提供的默认材质:

相同地,对于右手,我们採取相同的方法找到节点,为其加入特效组件,这里命名为RightWeaponTrail。接下来,我们将模型结构临时合并到一起,我们选中真个模型,为其加入AnimationController脚本,这是PocketRPG提供的用于控制模型动画的一个脚本。好了,做好前面的基础后,我们来编写脚本,控制我们的角色:

using UnityEngine;
using System.Collections; public class ChangeAnim : MonoBehaviour { //定义左手WeaponTrail
public WeaponTrail mWeapTrailL;
//定义右手WeaponTrail
public WeaponTrail mWeapTrailR; //定义攻击招式1
private AnimationState State_Attack1;
//定义攻击招式2
private AnimationState State_Attack2;
//定义攻击招式3
private AnimationState State_Attack3;
//定义攻击招式4
private AnimationState State_Attack4; //定义等待状态
private AnimationState State_Wait; //动画控制器
private AnimationController mController; void Start ()
{
//获取动画控制器
mController=gameObject.GetComponent<AnimationController>(); //为每个招式设定相应的动画
State_Attack1=animation["Attack1"];
State_Attack2=animation["Attack2"];
State_Attack3=animation["Whirlwind"];
State_Attack4=animation["WhirlwindAttack"]; State_Wait=animation["Idle"];
//为动画控制器加入武器拖尾脚本
mController.AddTrail(mWeapTrailL);
mController.AddTrail(mWeapTrailR); //设置拖尾效果
mWeapTrailL.SetTime (3.0f, 0, 1);//设置拖尾时间为3秒
mWeapTrailR.SetTime (3.0f, 0, 1);//设置拖尾时间为3秒
} void OnGUI()
{
if(GUILayout.Button("翔龙斩",GUILayout.Height(30)))
{
mController.PlayAnimation(State_Attack1);
StartCoroutine("ReSetToWait");
} if(GUILayout.Button("裂穹击",GUILayout.Height(30)))
{
mController.PlayAnimation(State_Attack2);
StartCoroutine("ReSetToWait");
} if(GUILayout.Button("天罡伏魔",GUILayout.Height(30)))
{
mController.PlayAnimation(State_Attack3);
StartCoroutine("ReSetToWait");
} if(GUILayout.Button("乱剑悬月",GUILayout.Height(30)))
{
mController.PlayAnimation(State_Attack4);
StartCoroutine("ReSetToWait");
} } //0.5秒后恢复到等待状态
IEnumerator ReSetToWait()
{
yield return new WaitForSeconds(0.5F);
mController.PlayAnimation(State_Wait);
}
}

这里须要注意以几点:

1、使用PacketRPG时,模型动画将不受模型自带的Animation组件的控制,我们须要使用Animation Controller来控制模型动画。详细方法是PlayAnimation(AnimtaionState mState)

2、在PacketRPG中,通过SetTime()方法来设置武器拖尾的时间,通过StartTrail()和FadeOut()来实现特效的渐入渐出效果。当然,我们能够通过WeaponTrain脚本来设置,详细參数的意义大家能够查阅文档。

3、该脚本中的两个WeapTrail对象分别指向我们实现定义好的LeftWeaponTrail、RightWeaponTrail。

好了,我们来看看终于的效果吧:

技能一:翔龙斩

技能二:裂穹击

技能三:乱剑悬月

好了,这就是今天的博客了,希望对大家实用、希望大家喜欢!

每日箴言:有两样东西,愈是常常和持久地思考它们,对它们日久弥新和不断增长之魅力以及崇敬之情就愈加充实着心灵:我头顶的星空,和我心中的道德法则——康德

喜欢我的博客请记住我的名字:秦元培,我的博客地址是:blog.csdn.net/qinyuanpei

转载请注明出处,本文作者:秦元培,本文出处:http://blog.csdn.net/qinyuanpei/article/details/24388765

[Unity3D]Unity3D游戏开发之刀光剑影特效的实现的更多相关文章

  1. 《Unity3D/2D游戏开发从0到1(第二版本)》 书稿完结总结

    前几天,个人著作<Unity3D/2D游戏开发从0到1(第二版)>经过七八个月的技术准备以及近3个月的日夜编写,在十一长假后终于完稿.今天抽出一点时间来,给广大热心小伙伴们汇报一下书籍概况 ...

  2. Unity3D手机游戏开发

    <Unity3D手机游戏开发> 基本信息 作者: 金玺曾 出版社:清华大学出版社 ISBN:9787302325550 上架时间:2013-8-7 出版日期:2013 年8月 开本:16开 ...

  3. 关于《Unity3D/2D游戏开发从0到1》书籍再版说明

    关于<Unity3D/2D游戏开发从0到1>第一版本在2015年7月1日全国发行,累计得到不少国内高校教师.培训机构的好评.但是由于Unity官方对于技术不断的升级与版本的快速迭代,基于U ...

  4. 《Unity3D/2D游戏开发从0到1》正式出版发行

    <Unity3D/2D游戏开发从0到1>正式出版发行 去年个人编写的Unity书籍正式在2015年7月正式发行,现在补充介绍一下个人著作.书籍信息:      书籍的名称: <Uni ...

  5. Unity3D 入门 游戏开发 Unity3D portal game development

    Unity3D 入门 游戏开发 Unity3D portal game development 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com ...

  6. Unity3D独立游戏开发日记(二):摆放建筑物

    在沙盒游戏里,能自由建造是很重要的特点,比如说风靡全球的<我的世界>,用一个个方块就能搭建出规模宏大的世界.甚至有偏激的人说,没有自由建造,就不是一个真正的沙盒游戏.的确,沙盒游戏的魅力有 ...

  7. Unity3D独立游戏开发日记(一):动态生成树木

    目前写的独立游戏是一个沙盒类型的游戏.游戏DEMO视频如下: 提到沙盒类型的游戏,就有人给出了这样的定义: 游戏世界离现实世界越近,自由度.随机度越高才叫沙盒游戏.所谓自由度,就是你在游戏里想干啥就干 ...

  8. Unity3D小游戏开发之两个我踩过的坑

    最近在开发一个植物大战僵尸小游戏,今天写了一早上的代码,踩了两个坑,这两个坑的位置分别位于触发器和数据转换,写这篇博文以此来让其他程序员不要再去踩这两个坑. 1.我在做简易僵尸模型的时候,这个僵尸模型 ...

  9. Photon + Unity3D 在线游戏开发 学习笔记(两)

    本文和大家 和大家说说 Photon 解压后的目录结构 这里面最基本的我们 以后开发要用到的目录 就是  deploy目录,这个目录里 放的是要挂载的 server 当然我们的 server端也要放在 ...

随机推荐

  1. “MEAN”技术栈开发web应用

    “MEAN”技术栈开发web应用 上一篇我们讲了如何使用angular搭建起项目的前端框架,前端抽象出一个service层来向后端发送请求,后端则返回相应的json数据.本篇我们来介绍一下,如何在no ...

  2. Visual Studio 原生开发的10个调试技巧(二)

    原文:Visual Studio 原生开发的10个调试技巧(二) 我以前关于 Visual Studio 调试技巧的文章引起了大家很大的兴趣,以至于我决定分享更多调试的知识.以下的列表中你可以看到写原 ...

  3. 【三】注入框架RoboGuice使用:(Your First Resource Injection)

    上一篇我们简单的介绍了一下RoboGuice的使用([二]注入框架RoboGuice使用:(Your First View Injection)),今天我们来看下资源文件的使用注解的方法: 为了在Ac ...

  4. andriod 在windows配置环境

    andriod开发环境配置 个人信息:就读于燕大本科软件project专业 眼下大四; 本人博客:google搜索"cqs_2012"就可以; 个人爱好:酷爱数据结构和算法,希望将 ...

  5. 详细说明C++笔试题,调查超载、盖、多态

    C++可见版本,他说,这本书是采访的主题,调查超载.盖.多态性等概念,比较有代表性的.今天上午,远程辅导 Yan Wang 学生们学习 Qt 时还觉得这个话题,假设你能正确地理解这一主题,注意对于 C ...

  6. Rust这个新的语言

    Rust这个新的语言 Rust初步(七):格式化 摘要: 在Rust中,如果要进行屏幕输出,或者写入到文件中,需要对数据进行格式化.这一篇总结一下它所支持的几种格式化方式. 这篇文章参考了以下官方文档 ...

  7. Java虚拟机类型卸载和类型更新解析(转)

    转自:http://www.blogjava.net/zhuxing/archive/2008/07/24/217285.html [摘要]          前面系统讨论过java 类型加载(loa ...

  8. TinyMCE实现简单的本地上传

    TinyMCE这个东西很多地方再用,不过我以前一直没用过,最近才接触,因为有一套现成的metro风格的皮肤,仅此而已,不过最终如何调用还是我得来实现.其他的都好说,网上的资料一大把一大把的,唯独这个本 ...

  9. Android 定义自己的学习(5)它们的定义Progressbar

    它们的定义View最后的研究,首先在效果图. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDE2MzcyNg==/font/5a6L5L2T/f ...

  10. Javascript学习7 - 脚本化浏览器窗口

    原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...