9月3日到10月13日工作总结-操作篇

时间:2021-08-22 11:47:38

       这段时间在忙新项目,不时的有老游戏的功能进来,总体状态还不错。在之后的日子中继续保持这种状态。

       下面写一些在此期间做游戏中实用的tips,希望对大家有所帮助。

       操作的内容主要是逻辑相关,所以和策划多沟通是必不可少的,策划说是什么就加上代码。下面是策划的需求,参考以前老游戏,老游戏是一款2.5D游戏。

       左键点击怪物,NPC,玩家分别是什么情况,右键点击怪物,NPC,玩家是什么情况,键盘中使用技能出现什么情况。这些都是操作所需要做的。因为有老游戏的参考,新游戏风格和老游戏类似,也就沿用了老游戏的操作。左键和右键分别可以放一个技能,左键不可以放有CD技能;左键连攻;右键单攻;键盘点击一下单攻;左键连攻时,点击右键,如果是同一个怪就切换单攻一次再换成原来的左键技能;如果是不同怪就用右键攻击一下那个怪。

       程序上实现上面红色部分是记录3个状态,pre_opstate,current_opstate,next_opstate,current_selobj,单左键攻击怪物时,右键点击了原来的怪物,就在pre_opstate中保存当前左键的技能等,即pre_opstate = current_opstate;此时有两种情况,一种是硬直时间(不懂请百度之)和动作播放时间,两个时间较大的值没过,则还不可以马上进行技能释放,则把右键的操作状态保存next_opstate中(ORbuttonDown中)。如果左键的硬直时间已过,则不用把右键的操作保存在next_opstate中,直接存在current_opstate中。另外,键盘技能其实就是上述右键情况的第二种情况,当左键进行连攻时,没在硬直时间可以进行下次攻击,就出发键盘技能函数。另外写一个一直循环函数来处理这种情况ContinueOpState(),当下一次循环的时候处理next_opstate,再下一次处理pre_opstate(current_opstate都是在OnLButton或者OnRButton等函数中处理了)。

       这套代码实现的时候,左键等入口函数不是winproc函数,而是走的GUI高级钩子消息。