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

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

时间: 2024-10-28 11:08:43

Cocos2D:塔防游戏制作之旅(十)的相关文章

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

编译运行你的app,放置一些炮塔在你的地图上吧!你将看到炮塔在敌人移动如攻击范围时如何立即开始攻击,并且敌人的血条将随着攻击不断减少知道它们被人道毁灭!胜利即将来临了! 哦!Okay,这里只有少数细节还未实现你就可以得到一个完整特性的塔防游戏啦!音效应该是一个不错的尝试.并且尽管不可战胜和极端富裕很好,你的基地还是应该有能力持续抗打的能力 - 并且你需要限制玩家的金币供给. 闪耀着的炮塔:Gotta Polish It All! 开始实现显示玩家剩余的命数 - 以及当玩家失败时发生什么! 打开H

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

塔之战:炮塔的攻击 炮塔就位了?检查.敌人前进中?再次检查 - 它们看起来就是如此!看起来到了击溃这些家伙的时候了!这里我们将智能置入炮塔的代码中去. 每一个炮塔检查是否有敌人在其攻击范围.(炮塔一次只能攻击一个敌人.猫猪注)如果有,炮塔将开始向敌人开火直到两件事之一发生:敌人移出攻击范围或者敌人被摧毁.炮塔接着开始寻找其他欠扁的家伙 :] 将它们放到一起,新建新炮塔!你已经有一个防御基础了! 因为敌人和炮塔类相互依赖彼此,你不得不首先更新它们类的头文件,去避免你在修改实现代码时Xcode发生显

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

以上代码块相当直观 - 但是它分解的有些细致了. 首先,敌人通过传递HelloWorldLayer对象的引用而初始化.在init方法里,少数重要的变量被设置: maxHP:定义敌人有多经打(Tough guy,eh?) wakingSpeed:定义敌人移动的有多快 mySprite:存储敌人可视化的表示 destinationWaypoint:存储下一个路径点的引用. 其中update方法是真正见证奇迹的地方(where the magic happens),它每一帧被调用,并且首先检查自身是否

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

是时候放一些坏家伙来搅合一下了! 打开HelloWorldLayer.h并且添加以下代码: // Add these instance variables int wave; CCLabelBMFont *ui_wave_lbl; // Add the following property to the properties section @property (nonatomic,strong) NSMutableArray *enemies; 使HelloWorldLayer.m文件修改如下

转载--《怎样制作一款优秀的塔防游戏》

怎样制作一款优秀的塔防游戏?近日,独立游戏工作室,经典塔防游戏<守护者冒险>(Defender’s Quest)开发商Level Up Labs联合创始人拉斯·杜切特(Lars Doucet)撰写专栏文章,分享了其工作室制作<守护者冒险>的11项原则.杜切特表示,塔防游戏要想最大限度发挥自身潜力,需要做到让玩家专注,并考验玩家的思考.以下是杜切特所列11项原则的主要内容编译. 1.不用滚动地图 滚动地图是“专注”的敌人.如果玩家总是担心在自己视野范围之外有敌人来犯,那么他/她将十分

远古守卫/cocos2d-x 源代码/塔防游戏/高仿王国保卫战

下载地址:spm=686.1000925.0.0.j3MZhz&id=550780702354" style="color:rgb(224,102,102)">下载地址 本源代码高度模仿IOS游戏王国保卫战,由国外IOS商业开发教程站点raywenderlich内部project师制作,有很完整的关卡设计,战斗流程,长达12个关卡,各种敌兵,怪物,箭塔,炮塔一应俱全,还有魔法系统,成就系统以及后台数据库.差点儿达到了能够上线的商业游戏级别. 代码严格规范,提供了

Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(二)

一.前提: 完成前一篇的内容. 具体参考:Cocos2d-x3.x塔防游戏(保卫萝卜)从零开始(一)篇 二.本篇目标: l  说说关于cocos2dx手机分辨率适配 l  对前一篇完成的塔防游戏原型进行屏幕适配完善 三.内容: l  说说关于cocos2dx手机分辨率适配 在上一篇的结尾我们遗留了一个问题,在真机上运行时女主角.色狼的位置相当于道路都有点偏上了,并且好像背景地图也没有显示全背景的顶部和底部有一部分没有显示出来,但是在windows下运行确正常,这个是什么原因呢,该怎么调整呢?我的

远古守卫/cocos2d-x 源码/塔防游戏/高仿王国保卫战

本源码高度模仿IOS游戏王国保卫战,由国外IOS商业开发教程网站raywenderlich内部工程师制作,有非常完整的关卡设计,战斗流程,长达12个关卡,各种敌兵,怪物,箭塔,炮塔一应俱全,还有魔法系统,成就系统以及后台数据库,几乎达到了可以上线的商业游戏级别.代码严格规范,提供了一整套塔防游戏实现的解决方案,如一波波怪如何走出,怪的行走路线,我方小兵行动AI,塔搜索和攻击敌人的AI,代码严格按照MVC(model, view, controller)规范,让人一目了然,复用度极高.可惜原作者只

cocos2dx塔防游戏逻辑

cocos2dx 塔防游戏逻辑 1.欢迎界面 2.tield制作游戏地图,空块设置cantouch属性为1 3.设置地图锚点,把锚点加入一个锚点容器,给怪物的行走函数传入 该锚点容器参数,让怪物按照锚点行走 4.创建炮塔(触摸坐标转地图,转炮塔数组坐标) 先检查触摸开始位置是否可以创建炮塔,然后创建炮塔选择界面,位置是整块 再根据触摸的选择位于哪一块上,确定创建哪个炮塔 5.碰撞检测,将死亡的敌人加入死亡敌人容器,并且遍历移除 将已碰撞的子弹加入移除子弹容器,并遍历移除 6. 炮塔基类(炮塔分3