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

q332010372
Sat, 14 Feb 2015 12:34:58 +0000

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

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

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

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

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

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

阅读整个主题