Dou*_*kem 3 java opengl iphone
我正在寻找一个如何实现2D地形破坏的例子,你可以在烧焦的地球或iphone iShoot等游戏中看到它.
我正在寻求实现一个需要做可破坏地形的游戏,并使用OpenGL(Java中的LWJGL)和在iPhone上使用OpenGL ES来渲染它.
alt text http://www.vintagecomputing.com/wp-content/images/shareware/scorch_3_large.png
我记得,在沃尔姆斯他们使用了两张图片; 带有颜色的"漂亮"地形,以及纯黑色和白色的面具地形.命中检测始终在掩码上完成.
如果你真的希望地形像坦克大战一样崩溃,你需要迭代你的图像的每一列,并让它搜索地形和比赛场地底部之间的间隙.如果检测到任何间隙,请将间隙上方的地形向下移动到列中可能的最低点.
一个简单的例子可以用一个数组来完成,其中1代表实地形,0代表空的空间.在这种情况下,我将数组的左侧设置为地平面,元素[0]将在地面上:
[1,1,1,1,1,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
让我们假设地形从侧面被击中并形成一个洞:
[1,1,0,0,1,1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
你现在留下了另一块地形上方的浮动地形.要使浮动地形折叠,请遍历数组,跟踪找到0的第一个位置(空白区域).然后,当您继续迭代时,在发现1(地形)时,只需将1移动到0所在的位置.通过迭代旧的0位置+ 1重复该过程.
[1,1,1,0,0,1,0,0,0,0]
[1,1,1,1,0,0,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
这是基本方法,而不是最有效的方法.例如,将所有地形索引同时向下移动到间隙会快得多.
编辑:
正如第一条评论所述,列表上的排序更容易.我保持原始的响应完整,因为它有助于解释崩溃地形背后的实际原理.
| 归档时间: |
|
| 查看次数: |
3600 次 |
| 最近记录: |