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

Yes,貌似添加了好多的代码啊 ;] ,在你添加更多代码时,你可能注意到一些Xcode中的一些警告.首先你先忽略这些警告,我们先添加少量最终缺失的部分,然后再来解释上面代码做了什么!

在Enemy.m中修改如下:

// Add the following at the beginning of initWithTheGame: (within the "if" condition)
attackedBy = [[NSMutableArray alloc] initWithCapacity:5];

// Replace the contents of  getRemoved method with the following:
-(void)getRemoved
{
    for(Tower * attacker in attackedBy)
    {
        [attacker targetKilled];
    }

    [self.parent removeChild:self cleanup:YES];
    [theGame.enemies removeObject:self];

    //Notify the game that we killed an enemy so we can check if we can send another wave
    [theGame enemyGotKilled];
}

// Add the following methods
-(void)getAttacked:(Tower *)attacker
{
    [attackedBy addObject:attacker];
}

-(void)gotLostSight:(Tower *)attacker
{
    [attackedBy removeObject:attacker];
}

-(void)getDamaged:(int)damage
{
    currentHp -=damage;
    if(currentHp <=0)
    {
        [self getRemoved];
    }
}

代码中最重要的部分是Tower中的update方法.炮塔将定时检查是否敌人进入了攻击范围,如果是,我们的炮塔将旋转然后开始向敌人开火.

一旦一个敌人被标记为被攻击,一个方法将被调度执行用之前初始的攻击频率去发射子弹.轮流的,每个敌人保持攻击自身炮塔的一个列表,所以当该敌人被摧毁时那些炮塔可以得到信号去停止攻击.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值