当我遇到这个问题时,我正在研究XNA C#,我需要存储易于编辑的动画数据,以便我的游戏能够渲染和播放。
这是这样的:
我有一个纹理从(0,0)到(800,600)像素在屏幕上飞过。这将持续5s。
我如何在数据中表示它并编写它,以便游戏能够在Draw
和Update
方法中解释并执行必要的操作。如果我需要做一些大量的编码,那就没关系了。
答案 0 :(得分:1)
一种简单的特定领域语言可以提供帮助;创建一个AnimationDirector类,该类将解释动画脚本中的语句,并在Draw
和Update
期间执行相应的工作。 DSL本身可以像
texture 0,0; 800,600; 5.0
将在(0,0)创建一个纹理texture
的对象,并在5秒内将其移动到(800,600),然后将其销毁。
如果你想要更有用的东西,
create x texture 0,0
over 5.0 move x 800,600
destroy x
可以让您获得更多创意,并扩展动画的可能性(例如,如果您愿意,可以添加旋转等)。
现在,当您需要运行动画时,只需将相应的资源名称传递给导演,然后让它从那里处理。或者,您可以创建一种引用特定脚本的AnimatedEntity,并为Draw
和Update
调用AnimationDirector本身;根据你到目前为止的引擎方式,这可能更适合它的设计。
答案 1 :(得分:0)
这是一个快速提示...
纹理的位置可以用数学公式定义,它会在开始时给你(0,0),在五秒后给你(800,600)......