大家还记得小时候玩过的坦克大战吗?80后一定不会忘记吧,很经典的一个游戏。这里爱撸小杰将向大家简单介绍这个游戏的设计及开发思路。请不要问我要源码下载,因为我也没有成品,只是编码过程中遇到过一些值得思考的地方,提出来供大家参考罢了。

上面的图是不是很熟悉呢,那么我们先来分析下地图。

显然上图是一张13*13的方形地图,那么这里坦克的大小就是1*1的单位了。我来打个比方,有很多辆汽车,在一个城市行驶,但是马路的宽度只有你的汽车那么宽,那你要进入一条道路的时候就要和道路两边对齐,不然肯定就卡住了。

这个地图也有类似的情况,当你要进入一条通道的时候,如果车身与通道没完全对齐,那就会卡住,很郁闷,而且如果游戏中对碰撞判断严格,那就要求你对齐到每个像素点,这样虽然严谨了,但用户体验是很不好的。

我当时想到了以下方案:

  1. 一格一格的移动。也就是说每次点击移动,就移动一个车位,也就是一个单元格,这样可以保证每次都对准路口。但问题是玩起来的时候,一顿一顿的不连贯,没有那种坦克行驶的快感,这个方案很快被我排除了。
  2. 使用适当的缓冲,让坦克慢慢减速知道对齐到路口。举个例子,当坦克已经越出当前单元格的范围,并且玩家已经停止操作了,则让坦克已适当的加速度减速直到刚好进入并对齐至下一个单元格。这个方案是我在开发中使用过的,实际体验并不错。但有一个问题是,玩家停止前进但进行转向操作时,如果仍要缓冲一段时间到路口,那转弯操作延时比较大,影响用户体验。
  3. 转向时对齐单元格。这个方案是我在尝试了第二个方案,并觉得不太理想之后,就去网上下了一个FC坦克大战的模拟器,尝试了一下,发现原版的游戏用的是这种方案。简单描述一下,就是只有在转向的时候,才将坦克对齐到单元格,其他情况不做对齐操作。这样你会发现在一条道路上前进时,你可以停在道路上的任意位置,当你接近路口并按了转向按键时,你发现坦克突然对齐到单元格了,并顺利的转向继续行驶,中间没有停顿过程,用户体验非常好。

 

今天只是简单的介绍一下坦克的移动和转向思路,大家有兴趣的可以尝试一下,下期再见。

欢迎转载,但请保留此段,来自:爱撸小杰