Unity3D游戏开发之刀光剑影特效如何实现
2014-09-05 14:16
429 查看
可以看到,在这部游戏中,前两部是半即时制RPG,第三部则完全是即时制RPG。整个配乐大气磅礴,一招一式都有不错的打击感,而且武器的特效十分华丽。那么,到这里,就到了我们今天的主题:刀光剑影特效的制作。我们今天选择的PacketRPG插件,这个插件可以帮助我们快速地实现武器拖尾特效。好,下面我们开始:
首先我们打开导入PocketRPG Trails。使用这个插件,我们首先要做的是需要和美工交流,以获得模型中武器的确切位置。如果不知道武器的确切位置,建议大家还是使用这个插件自带的模型吧。好,首先我们在项目中找到这个模型:
下面我们将模型拖到场景中,展开模型,发现下面的结构:
我们展开到left_hand_joint这是左手的关节,可以发现它的下面有两个节点,第一个是手指,第二个我们将其改名为Left_Weapon,这就是我们左手武器的位置,我们在它的下面创建一个LeftWeaponTrail,这是用来显示我们特效的组件,我们为其添加WeaponTrail脚本:
完成该脚本的添加后,我们为其添加Mesh Renderer,选择特效材质,这里我们选择PocketRPG提供的默认材质:
同样地,对于右手,我们采取相同的方法找到节点,为其添加特效组件,这里命名为RightWeaponTrail。接下来,我们将模型结构暂时合并到一起,我们选中真个模型,为其添加AnimationController脚本,这是PocketRPG提供的用于控制模型动画的一个脚本。好了,做好前面的基础后,我们来编写脚本,控制我们的角色:
[csharp] view plaincopyprint?
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。
好了,我们来看看最终的效果吧:
技能一:翔龙斩
技能二:裂穹击
技能三:乱剑悬月
相关文章推荐
- [Unity3D]Unity3D游戏开发之刀光剑影特效的实现
- [Unity3D]Unity3D游戏开发之刀光剑影特效的实现
- C#开发wap如何实现图片、铃声下载
- ASP.NET 2.0如何实现数据库应用开发
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- 如何实现Custom Control?如何进行可视化开发?
- 如何实现Custom Control?如何进行可视化开发?
- 如何实现Custom Control?如何进行可视化开发?
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- 如何在VS.NET/C# Builder开发的网页中也能实现DOS下录入数据回车换行的功能
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- 如何利用C++ Builder 5.0 实现屏幕保护程序的开发
- VB开发——如何实现只允许输入汉字的文本框
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- 如何实现Custom Control?如何进行可视化开发?
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- [转]ASP.NET 2.0如何实现数据库应用开发
- 如何实现Custom Control?如何进行可视化开发?
- 如何在 Windows XP 或 Windows Server 2003 的应用程序开发中实现 URL 验证
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制