2010-02-06 90 views
2

我正在XNA C#上工作,当我遇到这个问题时,我需要存储容易编辑的动画数据,以便我的游戏能够渲染和播放它。存储矢量XNA动画

这件事情是这样的:

我有一个纹理从(0,0)在屏幕飞往(800,600)像素。这将持续5秒。

如何代表它的数据,并把它写使得游戏能够解释,并做必要的DrawUpdate方法。没关系,如果我需要做一些广泛的编码。

+0

如果您将动画存储为XML,那么您可以通过内容管道 – Martin 2010-02-06 20:35:31

+0

加载它们,您无法真正定义XML中的许多不同的动画和转换吗? – mauris 2010-02-07 00:32:43

+0

@Martin:如果项目要在普通PC以外的平台上运行,任何脚本动画都必须通过内容管道传输,无论它们是否以XML格式完成。将XML用于动画的结构DSL与纯文本相比没有任何优势。 – 2010-02-07 09:36:18

回答

1

一个简单的域特定语言可以帮助;创建一个AnimationDirector类,它将解释动画脚本中的语句,并在DrawUpdate期间执行相应的工作。所述DSL本身可以是一样简单

texture 0,0; 800,600; 5.0 

这将创造在(0,0)具有质感texture一个对象,并将其在5第二周期移动至(800600),然后破坏它。

如果你想要的东西多一点有用的,

create x texture 0,0 
over 5.0 move x 800,600 
destroy x 

这将让你获得更多的创造性,扩大动漫的可能性(如添加旋转等,如果你渴望这样)。

现在,当您需要运行动画时,只需将相应的资源名称传递给导演,然后让它从那里处理事情。或者,您可以创建某种引用特定脚本的AnimatedEntity,并调用动画导演本身DrawUpdate;取决于你迄今为止如何完成发动机,这可能更适合其设计。

0

这里有一个快速提示...

纹理的位置可以用一个数学公式,它会给你(0,0)的开始时间(800,600)5秒钟后进行定义和。 ..

+0

我知道如何用数学公式来定义它。然而,所存储的数据应该易于编辑(即人们可以轻松读取而不需要考虑),并且还有几个动画一起运行 – mauris 2010-02-06 07:36:56