炮塔哲学:敌人,攻击波和路径点

在创建敌人之前,让我们先为它们”铺路”.敌人将沿着一系列的路径点前进,这些路径点互相连接,它们被定义为敌人在你创建的世界中移动的路径.

敌人将在第一个路径点上出现,搜索列表中下一个路径点,然后这样重复下去,直到它们到达最后一个路径点-你的基地!如果这些家伙抵达你的基地,你将收到损伤.

我们使用类模板创建路径点的列表,名字为Waypoint,继承于CCNode.

将Waypoint.h替换为如下内容:

#import "cocos2d.h"
#import "HelloWorldLayer.h"@interface Waypoint: CCNode {HelloWorldLayer *theGame;
}@property (nonatomic,readwrite) CGPoint myPosition;
@property (nonatomic,assign) Waypoint *nextWaypoint;+(id)nodeWithTheGame:(HelloWorldLayer*)_game location:(CGPoint)location;
-(id)initWithTheGame:(HelloWorldLayer *)_game location:(CGPoint)location;@end

然后在替换Waypoint.m为以下内容:

#import "Waypoint.h"@implementation Waypoint@synthesize myPosition, nextWaypoint;+(id)nodeWithTheGame:(HelloWorldLayer*)_game location:(CGPoint)location
{return [[self alloc] initWithTheGame:_game location:location];
}-(id)initWithTheGame:(HelloWorldLayer *)_game location:(CGPoint)location
{if( (self=[super init])) {theGame = _game;[self setPosition:CGPointZero];myPosition = location;[theGame addChild:self];}return self;
}-(void)draw
{ccDrawColor4B(0, 255, 2, 255);ccDrawCircle(myPosition, 6, 360, 30, false);ccDrawCircle(myPosition, 2, 360, 30, false);if(nextWaypoint)ccDrawLine(myPosition, nextWaypoint.myPosition);[super draw];
}@end

首先,代码通过传递HelloWorldLayer对象的引用和一个CGPoint来初始化一个路径点,CGPoint是该路径点的位置.

每一个路径点包括了下一个路径点的引用;它创建了一系列路径点的链接(你以前有认真留意过数据结构课程吗?).每一个路径点”知道”列表中的下一个路径点.通过跟随这些路径点链接,你可以引导敌人到它们最终的目的地.敌人从不会从地图上撤退,它们有点像神风特工队的队员一样(kamikaze warriors).

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

  1. Cocos2D:塔防游戏制作之旅(十)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 背包模型dp1:01背包,完全背包,多重背包的两大优化的详解
  2. VIM编辑器(第十章)
  3. hdu4411 经典费用里建图
  4. Entity Framework Unit Testing problem and solution(转)
  5. LINQ to SQL语句(1)之Where(抄的好)
  6. ARM指令寻址方式之: 内存访问指令寻址
  7. 数据结构与算法之反转单向链表和双向链表
  8. WPF特效-实现3D足球效果
  9. 进程间通信-----管道
  10. SolidWorks学习日记
  11. 工业机器人技术试题_《工业机器人技术基础》课程试卷A卷
  12. zabbix mysql安装配置_Zabbix安装图解教程 | 系统运维
  13. 基于ATmega16单片机 程控滤波器程序源代码
  14. linux系统中 为mysql还原数据库_linux中mysql还原数据库命令
  15. android文件恢复功能,安卓手机误删文件恢复?快速恢复办法
  16. 恶心的极速输入法windows10 删除
  17. NFC开发 —————实现NFC手机做门禁卡的方法(二)
  18. 京东自动评价助手/京东评价
  19. (node)Warning: Accessing non-existent property ‘xxx‘ of module exports inside circular depen
  20. matlab 相位滞后,相位滞后.PPT

热门文章

  1. C# 静态变量及静态函数
  2. WINCE--修改MAC地址
  3. PyTorch 模型训练教程(一)-数据
  4. prepared statement mysql_MySQL之 Statement实现及PreparedStatement实现
  5. Python图像处理](2)---图像融合、加法运算及图像类型转换、图像缩放、图像旋转、图像翻转与图像平移
  6. 通过OpenSSL创建自签名证书在Flask实现HTTPS
  7. 利用格林函数解泊松方程
  8. jupyter notebook 快捷键
  9. Qt Chart柱状图实现
  10. knot DNS 02 Tips - XDP