0

我正在用 actionscript/flex 3 (flash) 创建一个太空游戏。世界无限大,因为没有地图。为此,我需要动态(以编程方式)渲染背景,它必须看起来像开放空间。

为了让世界感觉真实并让某些地方看起来与其他地方不同,我必须能够添加过滤器,例如颜色差异,甚至可能是一种模糊的变换——然后这些会被随机添加和更改。

玩家可以通过飞到屏幕的两侧来“滚动”“地图”,这样世界的某个部分只能一次可见,但玩家可以去任何地方。滚动通过将除玩家之外的所有对象向相反方向移动,使其看起来像是向那个方向移动的玩家。背景也需要移动,但必须在新发现的地形(动态创建)上有所不同。

现在我的问题是我将如何做这样的事情,我需要使用什么样的东西以及如何实现它们?还需要考虑性能,因为游戏中将有更多的对象。

4

1 回答 1

1

您应该只拥有可见区域内的对象的视图。您可能想为此使用四叉树

背景应该由一组图块组成,您可以或多或少地随机重复(实际上,您真的需要背景吗?有一些粒子还不够吗?)。在这里使用与对象相同的技术。

因此,最后,您最终拥有了对象和瓷砖或粒子的模型(您将在开始时生成)。这样,您只需添加一些浮点数(如果您不计算距离很远的对象的位置,您可以获得额外的性能。四叉树应该可以帮助您,但我认为这不是必需的)如果具有视图的对象离开舞台,则释放视图,并使用四叉树检查是否出现新对象。

如果您使用大量对象/粒子,请考虑使用对象池。如果对象仅移动,且未旋转/缩放,请考虑使用DisplayObject::cacheAsBitmap.

于 2009-07-20T14:02:55.720 回答