Unity3D 动画事件(二):基于时间的事件


另一种常见的事件是逻辑型事件。虽然它也与动画的状态紧密相关,但这些事件中包含着逻辑处理。例如,角色在攻击动作的过程中触发伤害。或者在攻击出拳的动作过程中向前移动,遇到敌人就停止移动。这些事件与逻辑紧密相关,已经不仅取决于美术的表现效果,更多是数值与逻辑的合理性。

对于这种事件,采用基于时间的动画事件就更为合理。在制作事件时,我们记录的是局部时间线的偏移值,并将它以独立文件的形式存储。在上一节中,我们知道游戏中会存在一条游戏时间线。当动作开始时,我们会将这些事件时间偏移量并入游戏时间线,并在游戏时间线的对应时间添加触发事件的回调。这样事件触发就完全脱离了模型动画。

这样做的优势还在于显示与逻辑的分离。在同屏多人的游戏中,有时会有不播放角色动画,只产生技能触发的需求。在这种事件框架下,就可以只运行基于时间的事件而不去加载模型与动画。因为伤害触发与计算不需要依赖于动画,所以一切逻辑都可以正常运行。另外,在有异步数据影响的场景中,这种的事件控制方法也有优势。它可以预先做好逻辑计算,再对动画做插值处理,数据优先于动画直接进行同步,将网络延迟对游戏的影响降到最低。

本文出自 松阳论道 转载必须注明出处

http://blog.songyang.net/5751.html

说点什么吧...

电子邮件地址不会被公开。 必填项已用*标注