请问一下角色扮演类游戏的技能该怎么实现?

目前卡在 人物动画 + 中断 + 技能效果 的协作处理。
主要问题在于 技能的中断 和 对应技能使用相应的动作。

关于动画:
假设 角色使用了技能 A,这个技能的效果是 抛出一个小球,小球直线运动,会给敌方造成伤害。角色在抛出小球之前需要做一个投掷动作,扔完后有个收手动作,角色在抛出小球之前是可以被其它外界因素中断的。
为了复用性,应该把小球给剥离出来,单独做一个类。
所以,就需要一个帧事件,在第 X 帧构造一个飞行的小球。

假设 角色使用了技能 B,这个技能的效果是角色进行快速连续斩击,这个技能每一次斩击都会使一个范围中的敌人受一次伤害,这个技能在动作结束之前,是可以被打断的。
为了复用性,需要构造一个产生即时范围伤害的类。
所以,就需要多个帧事件,在第 x1, x2, x3 … xn 帧构造一个范围伤害。

缺点:1、只适应特定的模型动画。2、需要在帧事件回调函数里去处理所有技能的帧事件。

关于中断:
每个技能的中断方式都不同(比如移动、被击晕、被冻结等),因此技能是否被中断,需要不同的逻辑判断。
为了编码方便,最好是用订阅者模式,去监听角色的事件,来做相应的处理。

那么,问题来了……
请教有经验的朋友,该怎么去设计这样的一个类?

应该可以设计成状态机吧

楼主的游戏技能多吗?一个游戏一共会有多少个技能,如果超过20个以上吗?角色有多少个,超过20个以上吗?不知道你游戏的倾向性就不知道怎么设计啊。一般像大型的arpg游戏,技能很多的话,人物类里面会有很多的组件,比如技能组件,buff组件,表示这个人的一些技能和buff状态,然后人物发生变化,向所有的技能和buff对象推送一个状态变化,比如砍一刀,被攻击者会吧受到的伤害和伤害来源对象传递进所有的自己身上的技能和buff,进行一遍处理,这样推送保证了所有的技能和buff都得到了处理。然而每个技能和buff不比关心具体的攻击对象是哪个角色。