2

我正在使用canvas.

我有在游戏初始化时随机生成的地形。地形可以通过游戏中的武器摧毁。

这是我要生成的地形示例

生成此 2D 地形时...

  • 最好是简单地存储每个x坐标的峰值,还是存储地形的每个像素?
  • 当通过武器损坏移除一部分时,我应该将该像素切换为关闭然后重新绘制地形,还是在通过存储的武器损坏检查每个像素是否开启时重新绘制地形?或者,在武器损坏时,我应该调整地形状态的每个峰值,然后重新绘制?
4

3 回答 3

2

我认为您可以安全地将地形存储在二维数组中。拥有大小为 3000x1000 的布尔数组可能看起来很可怕,但请放心,遍历这样的数组仍然非常快。您可以遍历整个数组 10 次,仍然保持流畅的动画速度。

于 2011-03-06T14:58:33.220 回答
1

耶,焦土!据我所知,您甚至可以在原始地表以下轰炸圆形体积的地形(跨越式!)。然后地形将崩溃并填补空白。因此,仅存储曲面的多边形顶点坐标是不够的。每像素阵列方法似乎是一个更好的主意。

重绘问题仍然很困难。我想以 30fps 重绘整个画布是不可行的。也许您只能重绘受武器影响/崩溃的像素。

于 2011-03-06T11:04:39.017 回答
0

假设您将您的地形分割成子方格。

前:

+---------------------------+
|           ______       /  |
|   ___    /      \     /   |
|  /   \__/        \___/    |
|-/                         |
|                           |
|                           |
|                           |
+---------------------------+

后:

+---------------------------+
|    |    | ___|__  |    |  |
|   _|_   |/   |  \ |   /|  |
|  / | \__/    |   \|__/ |  |
|-/--|----------------------|
|    |    |    |    |    |  |
|    |    |    |    |    |  |
|    |    |    |    |    |  |
+---------------------------+

您可以为这些小节设置三种状态:

  1. 全地形
  2. 全部空白
  3. 分开

这应该会给你一个不错的优化,而不会严重牺牲代码的可读性。

于 2011-03-07T04:56:45.633 回答