真正的塔防游戏中使用到了之前大部分课程的知识点,本节课以把塔防游戏完成为目的,讲述其中的理论知识
地图的使用
上一讲我们已经做到了让飞机移动,但是移动的位置是在地图中观察后直接在code中写的。还有另外2个办法,1是用Astar算法,这个算法是用于自动寻路的,但是这个算法用在这里大材小用,那么还有另外一个办法,就是在tmx地图中先标记若干个点,然后在code中抓到这些点,得到这些点的坐标,根据这些得到的坐标进行移动。准备工作:在tmx中创建一个对象层,选中对象层,然后选择Insert Rectangle,在路径的拐弯处insert,然后选择“选择对象”,对刚才insert的Rectangle,点击右键,设置名字,比如Point1(在这里还可以设置类型或者增加其他键值对),准备工作结束。回到代码中,使用map的getObjectGroup方法,传入参数为刚创建的对象层的名称,得到一个TMXObjectGroup的实例,调用该TMXObjectGroup实例的getObject方法,传入参数为刚才设置的名字,比如Point1,就找到了一个Rectangle对象(一个ValueMap实例),比如pointDict。通过调用该ValueMap实例的at方法,比如pointDict.at("x").asFloat()就可以得到该对象的x坐标,这个坐标是OpenGL坐标系中的坐标,然后将所有Rectangle对象的坐标替换掉之前code写死的坐标,就是用另外一个方法,让飞机移动
用调度器来控制多个飞机飞,在点击start事件的时候开启调度器,然后在调度器函数中初始化sprite,然后让sprite动起来,这样就可以控制多个飞机
如何让飞机匀速运动
在demo中可以看出来,飞机并非匀速运动,如果需要匀速运动,可以把动作拆分,现在是按照一个pointarray规定的路线运动,可以拆成一段一段的,但是需要计算每段运动需要的时间(那距离除以元素的速度属性),依次去执行运动;也可以拆成一段段的之后,通过回调函数来依次执行动作。
如何发射子弹
本次demo没有加入发射子弹,但是发射子弹其实使用之前demo学到的东西即可完成。1、根据距离判断飞机是否在被攻击范围之内,2、如果在被攻击范围之内,就创建一个子弹元素,路径是飞机和气球快速运动,然后根据碰撞算法,即可完成发射子弹
如何让元素升级
升级只牵扯到一件事情,更换图片,比如原始气球的gid号码是1,升级后气球的gid号码是2。那么我们只要保证1和2的图片不同,1和2对应的属性不同,比如1的count属性value为1,代表每秒发射1发子弹;2的count属性value则为2,代表每秒发射2发子弹;这样,我们对1进行升级操作的时候,就只需要把1换成2,即可完成升级,在之后的过程中,所有属性都使用2的属性了。
总结
tilemap讲完了,基础就差不多了。但是后面还有很多很多东西,比如ios开发的scrollview、tableview、button等、手势放大缩小,在cocos2dx也有;网络游戏对应的网络相关的东西:http请求、web socket等(内购所需);物理引擎box2d
笔者制作网站的目的,主要是借用自己之前的知识背景(Android App开发和图形学知识),将自己学习笔记拿出来,和大家一起进行交流,毕竟每个人的知识体系不同,有交流才会有提高,所以欢迎大家通过各种方式和我联系。
网址:www.geekfaner.com
youku教学视频:http://i.youku.com/geekfaner
“百度传课”教学视频(高清版_推荐):http://www.chuanke.com/s2588605.html