最终,draw方法显示这些路径点被放置在哪里,并且绘制出路径点之间的连线,它们仅仅被用作调试.一个成品游戏不应该绘制敌人的路径 - 那对于玩家来说太过容易了!

创建路径点的列表.打开HelloWorldLayer.h并且添加以下属性:

@property (nonatomic,strong) NSMutableArray *waypoints;

下一步,添加以下代码到HelloWorldLayer.m文件中:

//At the top of the file:
#import "Waypoint.h"// Add synthesise
@synthesize waypoints;//Add this method
-(void)addWaypoints
{waypoints = [[NSMutableArray alloc] init];Waypoint * waypoint1 = [Waypoint nodeWithTheGame:self location:ccp(420,35)];[waypoints addObject:waypoint1];Waypoint * waypoint2 = [Waypoint nodeWithTheGame:self location:ccp(35,35)];[waypoints addObject:waypoint2];waypoint2.nextWaypoint =waypoint1;Waypoint * waypoint3 = [Waypoint nodeWithTheGame:self location:ccp(35,130)];[waypoints addObject:waypoint3];waypoint3.nextWaypoint =waypoint2;Waypoint * waypoint4 = [Waypoint nodeWithTheGame:self location:ccp(445,130)];[waypoints addObject:waypoint4];waypoint4.nextWaypoint =waypoint3;Waypoint * waypoint5 = [Waypoint nodeWithTheGame:self location:ccp(445,220)];[waypoints addObject:waypoint5];waypoint5.nextWaypoint =waypoint4;Waypoint * waypoint6 = [Waypoint nodeWithTheGame:self location:ccp(-40,220)];[waypoints addObject:waypoint6];waypoint6.nextWaypoint =waypoint5;}// At the end of init:
// 4 - Add waypoints
[self addWaypoints];

编译运行游戏,你将看到如下画面:

在地图上有6个路径点;敌人将跟随它们组成的路径.在你将坏家伙们放置在你游戏中之前,你需要添加一些帮助方法.

首先,在头文件中添加方法定义,以便其他类可以访问该方法而不招至编译器的警告.

打开HelloWorldLayer.h文件,在@end之前添加以下代码:

-(BOOL)circle:(CGPoint)circlePoint withRadius:(float)radius collisionWithCircle:(CGPoint)circlePointTwo collisionCircleRadius:(float)radiusTwo;
void ccFillPoly(CGPoint *poli, int points, BOOL closePolygon);
-(void) enemyGotKilled;
-(void) getHpDamage;

下一步,打开HelloWorldLayer.m文件,同样在@end之前添加以下代码:

-(BOOL)circle:(CGPoint) circlePoint withRadius:(float) radius collisionWithCircle:(CGPoint) circlePointTwo collisionCircleRadius:(float) radiusTwo {float xdif = circlePoint.x - circlePointTwo.x;float ydif = circlePoint.y - circlePointTwo.y;float distance = sqrt(xdif*xdif+ydif*ydif);if(distance <= radius+radiusTwo) return YES;return NO;
}

该collisionWithCircle方法将帮助我们确定两个圆的碰撞或者说是相交.它将确定敌人是否到达路径点,同样也可以检查敌人是否进入了炮塔的攻击范围.

Cocos2D:塔防游戏制作之旅(十)相关推荐

  1. 塔防游戏制作教程(四)

    嗨!大家好,我是小蚂蚁.今天我们继续分享制作一个塔防小游戏的第四节,如何实现炮塔的升级和出售功能. 如何实现炮塔的升级 在炮塔升级时,我们简单地做一些属性的提升以及外表的变化,例如当炮塔升级后,攻击速 ...

  2. [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--简介+代码+资源

    学校实训项目需要用cocos2dx做一款塔防游戏,因为时间与制图技术.创意原因无法进行原创,碰巧找到了皇家守卫军这款游戏的图片资源,决定用cocos2dx来重现这款经典塔防游戏. 本项目已完成3分之1 ...

  3. [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--敌人(二)之BOSS

    该章节主要介绍游戏中的BOSS 我主要制作了两个BOSS,分别为第6关的神灯和11关的大猩猩 首先,是BOSS的入场动画,例如第六关墙壁倒塌的效果.我们注意到BaseMap中有个虚函数virtual ...

  4. [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--其他

    最后一章,讲一下其他零碎的地方. 防御塔方面,还有炮塔的两个高级塔,例如地震塔,机器人塔.地震塔就是周围敌人全部减少血量,机器人塔就是一个士兵类,炮塔升级成士兵类,实现方式和士兵类似. 法师塔方面,死 ...

  5. [Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--防御塔(五)之高级箭塔

    该章节主要介绍高级箭塔 2级和3级箭塔与初级箭塔只是替换了图片并且将攻击力.射程等提高,其他并无区别 高级箭塔也是高级塔中最好设计的,通过替换一些图片,增加例如发光的眼睛,飞翔的老鹰等动画即可. 不同 ...

  6. 微信塔防小游戏开发教程,唤境引擎制作塔防游戏分享

    今天带来的是塔防游戏制作攻略! 点击这里来下载工程文件, 点击这里可以下载工程中所用的素材哦~ 预览状态时敌人会从四个生成点随机生成,并且会自动寻路绕过黑色墙体走向红色终点.点击黑色墙体可以创建炮塔, ...

  7. 如何制作一个塔防游戏 Cocos2d x 2 0 4

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  8. (译)如何使用cocos2d制作一个塔防游戏:第三部分

    原文链接地址:http://www.iphonegametutorials.com/2011/04/19/cocos2d-game-tutorial-%E2%80%93-how-to-build-a- ...

  9. (译)如何使用cocos2d制作一个塔防游戏:引子

    原文链接地址:http://www.iphonegametutorials.com/2011/04/11/cocos2d-game-tutorial-how-to-build-a-tower-defe ...

最新文章

  1. java数组交集_Java 实例 – 数组交集
  2. 如何不编程,采集网站评论信息?(视频教程)
  3. sess.run接收返回值得变量和sess.run函数內的tensor型变量命名注意不能一致,影响迭代,产生报错:Can not convert a ndarray into a Tensor
  4. android studio run按钮为灰色
  5. Spring MVC Controller与jquery ajax请求处理json
  6. C++STL笔记(八):set和multiset详解
  7. python打印输出12星座,怎么利用python输出星座
  8. JavaWeb 之 HttpServletResponse
  9. 新手学堂:Linux操作系统的启动步骤说明
  10. Web端高保真动态交互Axure元件库
  11. 联合作战效能评估软件
  12. 档案盒正面标签制作_使用WORD制作档案盒侧面标签方法
  13. 愚人节,你的微信公众号图文排版够愚吗?
  14. 高数笔记(二):极限的运算法则,极限存在准则,两个重要极限,无穷小的比较
  15. INT_MAX和INT_MIN的含义和用法
  16. Android 5.1 长按power键流程分析
  17. 国内物联网平台(7):Ablecloud物联网自助开发和大数据云平台
  18. MySQL优化系列16-优化MySQL的锁
  19. mybatis分页配置
  20. Diffusion model知识笔记

热门文章

  1. 转载--给函数取个好名
  2. Python报错:‘unicodeescape‘ codec can‘t decode bytes in position 2-3: truncated \UXXXXXXXX escape
  3. 京东/淘宝客服对话数据公开,seq2seq生成模型设计对话系统获第二名!
  4. 我在windows10下,使用CMake gui 编译krita源码
  5. 分组、分类(分组汇总)
  6. 01 ArcGIS空间分析--水文分析--利用水文分析方法提取山谷山脊线
  7. #loj3090 [BJOI2019] 勘破神机
  8. linux打印机测试程序,轻松了解Linux打印之CUPS软件
  9. RK3328 编码H265问题
  10. 复数 实数 有理数 无理数