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>

步骤3:

进行匹配操作,即逻辑关系处理。原理图如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 }

开发框架——横版格斗——6.技能播放的逻辑关系相关推荐

  1. 开发框架——横版格斗——动作游戏教程

    动作游戏教程 游戏类型: 游戏Demo属于横版格斗游戏,是动作游戏的一种.动作游戏(Action Game),简称ACT,游戏类型的一种,是广义上的游戏类型.以"动作"作为游戏主要 ...

  2. 横版格斗——技能动作概念

    [前言]这方面的资料源码不是太多吧,之前我见一个网友做过横版格斗的游戏,参考了他的编辑器和源码后,发现他很多地方也是参考了2DFM的格斗编辑器的,不过有很多地方值得学习的.下面简单罗列一下一个格斗动作 ...

  3. 如何制作一个横版格斗过关游戏 Cocos2d x 2 0 4

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  4. 如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4

    本文原创版权归 csdn 无幻 所有,转载请详细标明原创作者及出处,以示尊重! 作者:无幻 原文:http://blog.csdn.net/akof1314/article/details/85491 ...

  5. cocos2d-x 3 0 制作横版格斗游戏

    转自:http://philon.cn/post/cocos2d-x-3.0-zhi-zuo-heng-ban-ge-dou-you-xi cocos2d-x: v3.0-alpha-pre Wind ...

  6. 怎样制作一个横版格斗过关游戏 Cocos2d-x 2.0.4

     本文实践自 Allen Tan 的文章<How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Coco ...

  7. Cocos2d-x 3.0 制作横版格斗游戏2

    转载:https://blog.csdn.net/bridge001/article/details/18882575 git:https://github.com/pj2933/fight2d co ...

  8. cocos2d-x 3.0 制作横版格斗游戏

    cocos2d-x: v3.0-alpha-pre Windows环境: Windows8 + Visual Studio 2012 Linux环境: Ubuntu12.04 + gcc 4.7.2 ...

  9. 如何制作一个横版格斗过关游戏 Cocos2d-x 2 0 4

    本文实践自 Allen Tan 的文章<How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Cocos2D ...

最新文章

  1. linux主节点启动nfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  2. 【ios】Storyboard教程
  3. 汉明距离—leetcode461
  4. 三角形外接球万能公式_秒杀三角形问题!!三角形分角线的几个重要结论及其应用...
  5. python装饰器_Python基础-装饰器
  6. python执行过程_Python threading模块condition原理及运行流程详解
  7. opencv中滚动条操作
  8. leetcode刷题日记-转换成小写字母
  9. flash mx拖拽实例_Flash MX 2004片段面板预览
  10. day18正则表达式 的介绍和模块运用
  11. 计算机组成原理概述篇
  12. 蒋方舟:到清华不再做名人 狂热崇拜理工男生
  13. 2.1.1.15使用WIFI网卡1_准备工作及配置内核
  14. DL | TensorFlow代码调试
  15. 圆柱贴180度全景图片
  16. 芒德布罗集matlab程序,分形、噪声和状态变量
  17. JavaScript 算法与数据结构 之 正则表达式
  18. NSD ADMIN DAY02
  19. 腾讯云-轻量应用服务器部署Springboot项目+后台持续运行
  20. matlab矩阵创建

热门文章

  1. Node.js Buffers缓存对象
  2. 越狱第一季 英文表达总结(部分)
  3. 我研究了一个月阿里的岗位JD。。。
  4. 基于opencv的人脸识别和检测
  5. 短信平台系统搭建 后台功能管理 web源码架构 多线路由通道详解介绍
  6. 我天!中国科技原来有桎梏!道翰天琼认知智能机器人API平台接口为您揭秘-1。
  7. 单条视频播放3700w+,生鲜产品如何开启变现之路?
  8. 为什么概率不能推事件?
  9. 10个最好的获取免费书籍的网站
  10. Docker从入门到放弃-----Dockerfile常用命令解析与实战(使用docker制作一个开箱即用的consul镜像)