知易Cocos2D-iPhone 游戏开发教程005

 游戏中的地图是整个游戏的虚拟场景。通常情况下,手机上的游戏地图按照画面滚动方式可以分为以下三类:

1) 纵向滚动

常见的是打飞机类游戏,画面滚动主要是从上至下的模拟正在按照常规速度飞行的飞机。相对复杂一些的游戏也支持一定程度的左右横向滚动。

2) 横向滚动

ARPG类游戏,主脚通过画面从左至右的滚筒来探索未知的世界、消灭敌人、成功过关。相对复杂一些的游戏也支持一定程度的上下画面滚动。比如说“魂斗罗”、“超级玛丽”等等。

3) 纵、横向滚动

RPG游戏中这种情况最为常见,主角的一个关键任务就是探索一片较大的未知领域:发现敌人、发现特殊位置地点、建筑物等。

 无论那种场景都会涉及到以下问题:

1. 移动位置控制:主角在地图中移动时必须考虑到地图中物体的阻碍,不能越过墙体,必须通过木桥渡过河流。更加真实的模拟会要求主角在不同的地面上有不同的移动速度:土地速度一般,雪地较滑,移动快,停止效果滞后等。

2. 地图的动态变化:主角在游戏过程中的行为导致地图变化。这里所说的变化是永久的而不是临时的(如敌人尸体的腐烂和慢慢消逝,这种效果不涉及到修改地图)。比如摧毁敌方建筑,建立我方建筑,修建道路等。

由此可见,游戏中地图编程最主要的功能就是:

1) 如何展示一个较大的地图场景。

2) 如何实现地图对游戏主角和敌人移动的限制:阻止移动、修改运动效果。

3) 如何动态的改变局部地图的显示内容。

从本章开始,我们讲解Cocos2d-iPhone引擎提供的地图处理机制: Tiled maps。作为一个还在不断发展成熟的游戏图形引擎,TMX是当前主要支持的地图格式。原有的PGU格式已经作废,因此不再是我们讲解的重点。

地图编辑器

基础知识

考虑到内存的使用、运行效率和图像显示限制,iPhone上游戏的地图都是由若干的小的“瓦片”(英文称之为tile)组合而成。如下图:

这幅图其实是由以下3个瓦片组成的:

这样一来,一副很大的地图只需要通过很少的图像元素就可以实现,大大的减少了内存使用量,提高了游戏运行效率。

当然,这就要求我们在绘制地图的时候要多少有些艺术“细胞”,程序员们通常中规中矩的如下作品就显得很死板而不生动:(http://wiki.themanaworld.org/index.php/Mapping_Tutorial

稍作调整:

这样,感觉就好了很多。其实,我也感觉自己没有这个水平。那就找帮手吧,你身边肯定会有的,比如说那个看见你一回家就趴在电脑面前而很恼火的人。

0.8.1版本开始,我们可以直接将一个名叫Tiled的可视地图编辑器编辑的地图直接展示到iPhone屏幕上。Cocos2d-iPhone提供内置的CCTMXTiledMap负责展示地图和动态修改地图的内容。

 Tiled的主站是:http://mapeditor.org/index.html。这是一个开源的Java工具,也提供QtWind32上直接运行的Exe文件。至少到目前为止,建议大家使用Java版,安装Java 最新的运行环境(http://java.com/zh_CN/download/manual.jsp)。原因是: Qt版运行起来缺少重要的功能。

 这个工具十分简单,使用类似于windows自带的“画笔”程序,唯一不同的地方是:Windows“画笔”程序的最小图像单元是一个像素,而Tiled的最小单元是一个“瓦片”。通常情况下我们建议“瓦片”有相同的长和宽,并且尺寸是2的整数倍。(这是为了使图像在iPhone上运行时具有最低的内存占用,最好的运行效率)

英文好的朋友可以直接从该工具的主站和链接网站获得该工具的详细说明,笔者抽取最主要内容让大家尽快掌握。

...

如果您对本文感兴趣,可以到这里下载完整PDF示例源代码下载

你可能感兴趣的:(cocos2d)