我正在使用canvas
.
我有在游戏初始化时随机生成的地形。地形可以通过游戏中的武器摧毁。
生成此 2D 地形时...
- 最好是简单地存储每个
x
坐标的峰值,还是存储地形的每个像素? - 当通过武器损坏移除一部分时,我应该将该像素切换为关闭然后重新绘制地形,还是在通过存储的武器损坏检查每个像素是否开启时重新绘制地形?或者,在武器损坏时,我应该调整地形状态的每个峰值,然后重新绘制?
我正在使用canvas
.
我有在游戏初始化时随机生成的地形。地形可以通过游戏中的武器摧毁。
生成此 2D 地形时...
x
坐标的峰值,还是存储地形的每个像素?我认为您可以安全地将地形存储在二维数组中。拥有大小为 3000x1000 的布尔数组可能看起来很可怕,但请放心,遍历这样的数组仍然非常快。您可以遍历整个数组 10 次,仍然保持流畅的动画速度。
耶,焦土!据我所知,您甚至可以在原始地表以下轰炸圆形体积的地形(跨越式!)。然后地形将崩溃并填补空白。因此,仅存储曲面的多边形顶点坐标是不够的。每像素阵列方法似乎是一个更好的主意。
重绘问题仍然很困难。我想以 30fps 重绘整个画布是不可行的。也许您只能重绘受武器影响/崩溃的像素。
假设您将您的地形分割成子方格。
前:
+---------------------------+
| ______ / |
| ___ / \ / |
| / \__/ \___/ |
|-/ |
| |
| |
| |
+---------------------------+
后:
+---------------------------+
| | | ___|__ | | |
| _|_ |/ | \ | /| |
| / | \__/ | \|__/ | |
|-/--|----------------------|
| | | | | | |
| | | | | | |
| | | | | | |
+---------------------------+
您可以为这些小节设置三种状态:
这应该会给你一个不错的优化,而不会严重牺牲代码的可读性。