2009-08-14 14 views
2

我正在从事自上而下的2D视图游戏,我正在学习一大堆关于精灵和精灵处理。我的问题是如何处理一组可以在多达32个方向上旋转的精灵。什么是最好的方式来处理旋转精灵的自上而下的视图游戏

目前,一个给定的对象有其精灵表,所有的动画定向为对象始终指向0度。现在,由于对象可以在多达32个方向上旋转,因此使用该原始精灵表的最佳方式是什么?我目前最好的猜测是,当对象首次加载到游戏中时,程序基本上会动态创建32个精灵表,然后该类型对象的所有后续实例将共享这些精灵表。

无论如何,在这方面的任何意见将是有益的。如果我需要重述这个问题,请告诉我,我知道这是一个奇怪的问题。谢谢

编辑:我想要更多的澄清。如果我有,例如一个对象有2个动画5帧,这是一个非常简单的精灵表创建和组织,它是一个简单的2x5网格(或5x2取决于你如何布局)。但问题是现在这2个动画必须在32个方向上旋转。这意味着最终将会有320个单独的精灵。我会这么说(并且纠正我,如果我错了),因为我关心性能和帧速率,每个单帧都在动态旋转精灵不是一种选择。那么,组成这两个动画的320个精灵应该如何组织呢?会是更好的

  • 认为它是32 2×5子画面片
  • 分裂精灵表成各个帧,然后有一个数组每帧的32个不同的方向上(这样的32级定向的精灵10点的阵列)
  • 其他....?
  • 无所谓?

感谢

回答

1

通常情况下,您会牺牲处理器时间或内存,并且需要在两者之间进行平衡。除非你的处理器有一些很大的限制,否则你计算的是很多昂贵的东西,没有任何真正的理由把所有这些都放到内存中。用一个转换来转动几个精灵是非常便宜的,因此将32x的信息存储在内存中绝对是不值得的 - 尤其是因为这些信息是一堆图像,并且相对而言,图像占用了大量内存。

2

您只需通过设置精灵的变换的旋转部分直接旋转精灵。

有关示例代码,请查看此pygame tutorial中的Chimp精灵。当Chimp“晕眩”时它会旋转精灵。

+0

好的,我的意思是有效的。但老实说,我已经这样做了,我想我的问题是如何以最有效的方式组织精灵和他们的旋转......也许我需要重新编写它 – 2009-08-14 00:57:39

4

精灵的32个方向转化为32个旋转11.25度。

您可以将预先计算的图像数量减少到8个,只计算前90度(11.25, 22.5, 33.75, 45.0, 56.25, 67.5, 78.75, 90.0)并动态使用翻转操作。翻转速度要快得多,因为它们基本上只改变图像从缓冲区复制的顺序。

例如,当您显示旋转101.25度的图像时,加载67.5度的预先计算的图像并垂直翻转。

我刚刚意识到,如果您的图形是对称的这仅适用;-)

在谈到现代计算机,你可能不需要任何优化。预计算精灵使用的内存肯定可以忽略不计,而且在旋转图像时CPU的使用率也可能太高。但是,当您为嵌入式设备编程时,它确实很重要。

+0

我不知道为什么它不会发生在我身上只预先旋转第一个90度。好想法 ;) – 2009-08-14 11:04:53

相关问题