文档章节

《Genesis-3D开源游戏引擎--横版格斗游戏制作教程06:技能播放的逻辑关系》

Genesis-3D
 Genesis-3D
发布于 2014/01/14 14:04
字数 670
阅读 70
收藏 0

6.技能播放的逻辑关系

技能播放概述:

当完成对技能输入与检测之后,程序就该对输入在缓存器中的按键操作与程序读取的技能表信息进行匹配,根据匹配结果播放相应的连招技能。

技能播放原理:

按键缓存器中内容与技能系统缓存中的内容,进行匹配,匹配成功即播放相应连招技能动画。


图1

实现方法:

 

步骤1:
按键缓存。
1    private Dictionary < UInt32, Code> m_vInputKeyboards = new Dictionary < UInt32, Code>();//玩家连招按键缓存    
2    private UInt32 m_iCurrentKeyboardIndex = 0; //当前正在处理的按键索引

步骤2:
技能系统缓存。
1    private List<uint32> m_vMatchContinualSkill = new List<uint32>();//匹配当前按键的连招集合    
2    </uint32></uint32>

进行匹配操作,即逻辑关系处理。原理图如6-3-1所示。通过键值对,来匹配键入缓存器与技能读表缓存器中的内容,对技能读表缓存器中的连招技能筛选播放最后形成整套连招。


图6-3-1


01    public void SkillComboAni()    
02    {    
03     //第一招    
04     if (string.IsNullOrEmpty(PlayingSkillAnimationName))    
05     {    
06      if (0 == m_vInputKeyboards.Count) return;    
07      //将全部连招技能缓存到匹配连招容器    
08      foreach (KeyValuePair< UInt32, ContinualSkillData> pair inContinualSkillConfig.Instance.ContinualSkillDataDictionary)    
09      {    
10       m_vMatchContinualSkill.Add(pair.Key);    
11      }    
12      if (!AddCurrentKeyboardIndex())    
13      {    
14       throw (new ArgumentException("Player.SkillComboAni0"));    
15      }    
16      ProcessMatchContinualSkill();    
17      SkillData skillData = GetCurrentSkillData();    
18      if (null == skillData)    
19      {    
20       throw (new ArgumentException("Player.SkillComboAni1"));    
21      }    
22       PlayAnimation(skillData, true);    
23     }    
24     else    
25     {    
26      if (!ViewMgr.Instance.CurPlayerView.IsSkillAnimationPlaying(PlayingSkillAnimationName))    
27      {    
28       SkillData skillData = GetCurrentSkillData();    
29       if (null == skillData)    
30       {    
31        throw (new ArgumentException("Player.SkillComboAni2"));    
32       }    
33       //起招播放完成    
34       if (PlayingSkillAnimationName == skillData.SkillAnimation)    
35       {    
36        StopAnimation(skillData.SkillAnimation, true);    
37        //连招按键缓存读取完成    
38        if (!AddCurrentKeyboardIndex())    
39        {    
40         PlayAnimation(skillData, false);    
41        }    
42        else    
43        {    
44         //没有匹配到连招,播放收招,并且回退当前正在处理的按键索引到前一个    
45         if (!IsMatchContinualSkill())    
46         {    
47          PlayAnimation(skillData, false);    
48          SubCurrentKeyboardIndex();    
49         }    
50         else    
51         //播放匹配到的连招    
52         {    
53          ProcessMatchContinualSkill();    
54          SkillData skillData2 = GetCurrentSkillData();    
55          if (null == skillData2)    
56          {    
57           throw (new ArgumentException("Player.SkillComboAni3"));    
58          }    
59    
60         PlayAnimation(skillData2, true);    
61         }    
62        }    
63       }    
64       //收招播放完成    
65       else if (PlayingSkillAnimationName == skillData.SkillEndAnimation)    
66       {    
67        StopAnimation(PlayingSkillAnimationName, false);    
68        SetAttackIdle();    
69        ResetSkill();    
70       }    
71      }    
72     }    
73    }

引擎官方网站:http://www.genesis-3d.com.cn/

官方论坛:http://bbs.9tech.cn/genesis-3d/

官方千人大群:59113309   135439306

YY频道-游戏开发大讲堂(完全免费,定期开课):51735288 

Genesis-3D开源游戏引擎:游戏起源,皆因有我!!!


© 著作权归作者所有

Genesis-3D
粉丝 12
博文 34
码字总数 33360
作品 0
佛山
私信 提问
《Genesis-3D开源游戏引擎--横版格斗游戏制作教程07:UI》

概述: UI即User Interface(用户界面)的简称。UI设计是指对软件的燃机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅可以让游戏变得更有品位,更吸引玩家,还能充分体现开发者对游戏...

Genesis-3D
2014/01/14
1K
0
《Genesis-3D开源游戏引擎--横版格斗游戏制作教程05:技能读表》

5.技能读表 技能读表概述: 技能读表,作为实现技能系统更为快捷的一种方式,被广泛应用到游戏开发中。技能配表,作为桥梁连接着游戏策划者和开发者在技能实现上的关系。在游戏技能开发中,开...

Genesis-3D
2014/01/14
130
0
《Genesis-3D开源游戏引擎--横版格斗游戏制作教程04:技能的输入与检测》

4.技能的输入与检测 概述: 技能系统的用户体验,制约着玩家对整个游戏的体验。游戏角色的技能华丽度,连招的顺利过渡,以及逼真的打击感,都作为一款游戏的卖点吸引着玩家的注意。开发者在开...

Genesis-3D
2014/01/14
308
0
《Genesis-3D开源游戏引擎--横版格斗游戏制作教程03:碰撞检测》

3.碰撞检测 碰撞检测的概述: 碰撞在物理学中表现为两粒子或物体间极端的相互作用。而在游戏世界中,游戏对象在游戏世界自身并不受物理左右,为了模拟真实世界的效果,需要开发者为其添加属性...

Genesis-3D
2014/01/14
236
0
《Genesis-3D游戏引擎系列教程-进阶篇》2:声音

注:本系列进阶教程仅针对引擎编辑器:v1.2.2及以下版本 声音 众所周知,声音系统是一个游戏中非常重要的组成部分,优秀的游戏音乐是许多玩家能够长时间享受其中的重要因素。因此,熟悉和使用...

Genesis-3D
2014/01/20
60
0

没有更多内容

加载失败,请刷新页面

加载更多

Phpstorm2018 永久激活

1、安装phpstorm,安装包请自行官网下载 http://www.jetbrains.com/phpstorm/download/ 2、下载JetbrainsCrack.jar文件,存放至你的phpstorm执行文件同级目录下 下载JetbrainsCrack.jar 提取...

happyfish319
37分钟前
7
0
谈一谈Android进程间通信的几种方式

###来看一下Android中除了AIDL还有哪些进程间通信的方式: 1、Bundle Bundle实现了Parcelable,所以在Android中我们可以通过Intent在不同进程间传递Bundle数据。 但是在Intent 传输数据的过程...

二营长的意大利炮手
38分钟前
7
0
互联网薪资“高开低走”,你的能力是否真的可以匹配高薪?

对于国内外主流互联网大厂,技术出身似乎已经成为各大掌门人的必备标签。谷歌 CEO 桑达尔·皮查伊、马克·扎克伯格、李彦宏、马化腾、雷军等等皆为技术人出身,都曾参与了公司内部重要产品的...

Java技术剑
40分钟前
11
0
java 多线程

线程声明周期 线程的五个状态:新建,就绪,运行,阻塞,死亡。 其中就绪和运行两个状态客户互相转换,但运行到阻塞,阻塞到就绪,只能单向转换。 刚new出的线程就是【新建】状态,调用start...

雷开你的门
41分钟前
14
0
构造器Constructor是否可被overrid

构造器不能被重写,不能用static修饰构造器,只能用public private protected这三个权限修饰符,且不能有返回语句。

无名氏的程序员
45分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部