因此,我在开发的游戏中遇到了一个问题,但这似乎是很多游戏中都涉及的非常基本的问题。
我的游戏要求在角色动画期间的某个特定时间点发生某些游戏功能。因此,正如标题所说,我想知道有什么好的技术和基本策略可以将与游戏相关的事件/功能/动作同步到角色动画中的特定点。
以下是我在各种类型的游戏中谈论的一些简单示例:
您的角色将他们的枪重新装在射手中。您的角色将播放他/她的“重新加载”动画,但重要的是,仅在更换弹匣并握住枪支后的确切时刻调用设置currentAmmo变量的函数。这可能是重新加载动画中间的某个时刻。
在基于回合的RPG中,您的角色站在面对一排敌人的队伍中。当被命令进攻时,您的角色之一会奔跑/跳跃到敌人中的一个,并挥舞其巨剑,然后再奔跑/跳跃回到其站立位置。您想确保在播放大幅削减动画的确切时刻损坏敌人 -在向上跑和向后跑之间的某个时间点。
在隐形游戏中,您的角色可以潜行并与世界上的计算机和按钮互动。也许有一个按钮可以关闭您正在渗透的哨所的电源。当按下动作按钮时,您的角色伸出手并按下按钮,然后返回其闲置状态。您希望在按下按钮时在“ push_button”动画中的确切位置关闭灯。
诚然,我的情况最类似于第二个示例,在该示例中,我创建了一个动画,其中基于回合的角色在攻击过程中前冲,并且我希望在动画似乎与之接触的那一刻施加损害。因为我的游戏使用回合制(想像“最终幻想”或“火焰纹章”之类的东西),所以我需要伤害/治疗/魔法/等。即使我实际上没有使用碰撞/命中框,也可以在每个角色动画的正确时间应用它。
我应该提到的是,我正在使用流行的游戏引擎来制作游戏,而现在我正在通过使用他们的动画事件来处理该事件,或者通过通知来实现接近预期结果的效果-我的角色执行了某个命令并触发了特定于命令的动画(即:“ attack_command”)和我的每个命令的动画资产必须在我的角色ExecuteCommand函数中包括一个动画事件/通知“回调”。换句话说,角色告诉攻击动画播放,然后攻击动画会在动画发生的确切时间向角色发出事件/通知回调,该事件应在造成伤害时进行。
坦白地说,这暂时有效,但是感觉有点不对劲 -就像我在这里遗漏了一部分大图!这种方法感到不对的部分原因是,它将游戏逻辑与动画资产结合在一起。如果我的动画素材资源忘记包括ExecuteCommand()事件/回调,则该命令将无法正确执行,并且需要额外的代码来检查命令动画是否在不执行命令的情况下完成。这太乱了,这意味着我的游戏对其资产有奇怪的依赖性。当然,我希望在攻击动画期间的特定时间点造成损害,但是我对在动画资源中调用游戏代码感到很奇怪。
那我在这里俯瞰什么?有什么好的通用技术可以处理这些类型的情况,您希望在动画中的特定时间发生某些重要的游戏操作?
编辑:澄清一下,这不是引擎特定的问题,我也不是在寻找引擎特定的设计/技术。我对一种通用的动画/游戏同步技术很感兴趣,而无论使用哪种技术,这些技术都可能会在您的游戏项目中使用。