大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是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. Spring MVC框架搭建

    Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij ...

  2. unity3d 学习笔记(两)

    AudioClip 使用声音资源 unity3d资源可以被设置为声3d声音或2d声音.3d间的影响,越近声音越大 component: Audio source: 声音的发生物体 Audio list ...

  3. Flex里的特效

      Flex中提供了丰富的效果组件.因为效果是一种依据时间渐变的过程,因此全部效果都具有duration属性,用来设置播放时间(以毫秒为单位).也能够通过设置repeatCount属性和repeatD ...

  4. ProgressDialog(三)——代号为中心的屏幕上显示ProgressDialog(ProgressBar)

    MainActivity如下面: package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravit ...

  5. poj3903 Stock Exchange(最长上升子序列)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:id=3903">http://poj.org/problem?id=3903 Descrip ...

  6. UVA 193 Graph Coloring 图染色 DFS 数据

    题意:图上的点染色,给出的边的两个点不能都染成黑色,问最多可以染多少黑色. 很水的一题,用dfs回溯即可.先判断和当前点相连的点是否染成黑色,看这一点是否能染黑色,能染色就分染成黑色和白色两种情况递归 ...

  7. 普及windows流氓程序和监控软件

    win7下载更改后无黑屏windows7激活程序v1.0 一个立即安装 美女主播节目,和流行的色情垃圾邮件 安装程序,结果装了很多垃圾节目,输入.日历.文件等. 重新启动机器后,,会弹出广告. .他的 ...

  8. MySQL学习系列2--MySQL执行计划分析EXPLAIN

    原文:MySQL学习系列2--MySQL执行计划分析EXPLAIN 1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行 ...

  9. linux 核心学习书籍

    1<LINUX程序设计> 基础是非常重要的 2<UNIX环境高级编程> 还是基础 ,假设你是搞UNIX/Linux环境下的应用程序编程,那么就看 3, <Linux内核设 ...

  10. openstack 网络简史

    openstack 网络简史 研究openstack有2个月的时间,这段时间从网上获取N多宝贵资料,对我的学习有非常大帮助,在加上我自己的研究,最终对openstack整个网络体系有了个浅显的认识,写 ...