当前位置:  开发笔记 > 程序员 > 正文

动画和逻辑

如何解决《动画和逻辑》经验,为你挑选了1个好方法。

我有一个问题不一定特定于任何平台或API,但更具体到动画之间代码中的交互.

游戏就是一个很好的例子.假设玩家死了,并且在删除对象之前必须完成死亡动画.对于许多情况来说,这是典型的,在这种情况下,某些动画必须在继续执行通常会遵循的动作之前完成.你会怎么做呢?

我的问题是关于动画的控制和逻辑.您如何设计一个能够驱动动画但同时实现自定义行为的系统?

通常出现的问题是游戏逻辑和动画数据变得相互依赖.也就是说,动画必须回调代码或以某种方式包含动画序列持续时间的元数据.更常见的问题是,当一个动画必须触发一些其他代码时,比如在1.13s之后产生一个自定义精灵,这往往会导致代码和动画的深度嵌套.带有计时器的炸弹就是逻辑和动画的例子,两者都互动,但我想让它们尽可能分开.

但是你要做些什么来保持动画和代码两个不同的东西?

最近我一直在尝试mgrammar,我在想,DSL可能是最好的选择.这将允许动画或动画制作者以一种可能安全的方式表达某些事物,然后进入内容管道......



1> 小智..:

解决方案取决于你想要的游戏玩法.如果游戏玩法是100%代码驱动的,则动画由实体的状态(状态驱动的动画)驱动.如果它是图形/动画驱动的,动画长度决定了实体处于该状态的多长时间(动画驱动状态).

后者在商业生产环境中通常更灵活,因为设计师可以说"我们需要更短的死亡目标"并且它会得到协商.但是当你有非常精确的规则或像物理学这样的模拟系统时,状态驱动的动画可能更好.对于一般情况,没有100%正交和清洁的解决方案.

有一点可以防止它变得乱,就是考虑游戏AI模式:

游戏AI通常被实现为某种形式的有限状态机,可能是多个状态机或以某种方式分层(最常见的划分是具有低级别动作/转换的高级脚本格式).

在低级别你可以说"在hitreact状态,回放我的hitreact anim直到它完成,然后从高级逻辑中找出要继续的状态." 在高层次上,有很多方法可以用来定义逻辑,但是像"接近/攻击/撤退"这样的简单重复循环是一个很好的开始.

这有助于保持两种行为 - 计划活动和对新事件的反应 - 过于混合.同样,它在实践中并不总是以这种方式解决,原因与有时您希望代码驱动数据或相反的原因相同.但那是你的AI.这里没有一般解决方案

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有