碎片地图的用处在塔防游戏中体现的淋漓尽致,如果在上一讲没有看到碎片地图的优势,那么在这节课将更加详细的讲解地图。
地图的使用
真正能够发挥tilemap作用的是塔防游戏,因为地图是由一个一个小格子组成,各个小格子按照不同的顺序排列就又组成了一个新的关卡。先按照上一节的顺序,制作一张tmx地图,然后使用该地图实例化一个cocos2d::experimental::TMXTiledMap,并将该地图加入layer。
然后在触摸屏幕的时候,通过这个地图node的getLayer方法得到地图上的layer(一个地图可以有多个layer,一个layer可以有很多元素/精灵),然后根据触摸事件得到触摸的位置,使用getLocationInView方法,因为这样得到的是手机坐标系(左上角为00),而非OpenGL坐标系(右下角是00)。由于在tmx创建的时候坐标系是于手机坐标系一致(左上角是00),这样就可以轻易算出触摸的位置是tmx地图的哪个坐标(比如左上角就是00),然后根据这个坐标,调用layer的getTileGIDAt方法,得到这个坐标位置精灵的gid号。在触摸事件结束的时候(手离开触摸屏的时候),根据手触屏位置的精灵,在手离开屏幕的位置通过layer的setTileGID方法,创建一个相同的精灵,这就是塔防游戏的经典逻辑。再加上一定的判断,比如手触摸的时候必须碰到的是可选的“元素”,之后的步骤才有效;比如手离开屏幕的时候不能是“轨道”,否则不会发生任何变化。
再加上之前第六个demo的时候,讲到的让精灵动起来,这个塔防游戏就有点慢慢活起来了。
笔者制作网站的目的,主要是借用自己之前的知识背景(Android App开发和图形学知识),将自己学习笔记拿出来,和大家一起进行交流,毕竟每个人的知识体系不同,有交流才会有提高,所以欢迎大家通过各种方式和我联系。
网址:www.geekfaner.com
youku教学视频:http://i.youku.com/geekfaner
“百度传课”教学视频(高清版_推荐):http://www.chuanke.com/s2588605.html