队列处理技能的播放

2017-10-26  本文已影响0人  cui_512e

   学完栈和队列虽然实现过自定义的队列和栈,可是还是容易忘记,我总觉得多使用才能有深刻的记忆。

     今天做的这道题目。

题目

三连击? 于是我开始尝试做...

设想1:是这样的 定义一个状态的枚举(释放技能的时候判断当前的状态 和是否正在播放技能动画)

用户点击攻击后 ->  开启协成(攻击)->根据技能的名字播放对饮的动画 -> 等待动画播放完成。

public enum AttackState// 攻击的状态

{ normal, attack1,attack2,attack3}

然后在update中判断用户的点击然后根据当前的状态来改变运行对应的协程(因为要等待技能播放的时间完成才能播放下一个)

状态的控制切换 动画播放的协同程序

可是做完后发现每次攻击要等待动画播放完成才能进行下一次攻击,用户体验很不好啊,我如果想要用户连续点击三下(然后一个一个自动播放技能呢),这个时候我想到了队列,队列先进先出嘛。

设想2:还是定义当前状态的枚举,

用户点击攻击后 ->  队列里添加下一个状态的枚举(比如当前状态是闲置状态下一个状态就是攻击1) ->根据队列里是否有要播放的技能来播放技能 ->技能的名字播放对饮的动画 -> 等待动画播放完成。

将下一个状态入队列 在队列里依次处理播放对应动画的协成 播放技能动画的协同程序

这里注意当要播放的动画名字是第三个动画的时候,就让他的状态转换成正常状态、技能进入Cd状态(用户不能点击三次后,要等待cd时间冷却好才能再次使用技能)

Inspector面板上填好对应的参数(对应技能的动画名字、动画的长度也就是时间)

这里因为动画的速度比较慢我想让他变的快一点(默认是1),这样效果比较好一点。速度修改了对应的动画长度也要除以这个速度。

然后做点UI可以看出效果。

上一篇下一篇

猜你喜欢

热点阅读