這部分教程源**連線
這一章我們就要開始在game01.m檔案中canmoveto: 方法中的if迴圈中添
加相應的事件了,我在製作地圖時圖塊都設定了其屬性如圖:
這裡我就要獲取其屬性值
nsdictionary *props = [self.curtitlemap propertiesforgid:enemy_tilegid];
nsstring *value = [props valueforkey:@"enemy"];
int type = [value intvalue];
通過獲取到的屬性值來判斷是那一類怪物,這裡還得再新增兩個類enemy 和 monster
為了有重點的講解這裡我就先不介紹這兩個類了。**如下:
enemy.h**
#import #import "cocos2d.h"
@inte***ce enemy : ccsprite
//怪物編號
@property (nonatomic,assign) int enemyid;
//怪物名
@property (nonatomic,retain) nsstring *name;
//血量
@property (nonatomic,assign) int hp;
//攻擊
@property (nonatomic,assign) int attack;
//防禦
@property (nonatomic,assign) int defense;
//金幣
@property (nonatomic,assign) int coin;
//經驗
@property (nonatomic,assign) int experience;
//怪物行走動畫
@property (nonatomic,retain) ccanimation *walkaction;
-(enemy*) initwithemeny:(enemy*) copyform;
@end
enemy.m**
#import "enemy.h"
@implementation enemy
@synthesize enemyid;
@synthesize name;
@synthesize hp;
@synthesize attack;
@synthesize defense;
@synthesize coin;
@synthesize experience;
@synthesize walkaction;
-(id) copywithzone:(nszone *)zone
-(enemy*) initwithemeny:(enemy *)copyform
return self;
}@end
monster.h**
#import #import "cocos2d.h"
#import "enemy.h"
@inte***ce monster : enemy
+(id)initwith:(int)typeid;
@end
monster.m**
#import "monster.h"
@implementation monster
+(id)initwith:(int)typeid
enemy.enemyid = typeid;
enemy.name = name;
enemy.hp = hp;
enemy.attack = attack;
enemy.defense = defense;
enemy.coin = coin;
enemy.experience = experience;
}return enemy;
}@end
這裡面的有怪物引數我自己修改了一部分。
根據獲取到的屬性值來例項化響應的怪物**如下:
selenemy:當前選中怪物 ,應為要在其它方法裡呼叫這個怪物的引數所以這裡定義了乙個屬性。
這樣我們已經例項化了怪物,那麼接下來就要新增怪物的打鬥介面了在打鬥之前呢我們要判斷
是否能夠打過當前怪物所以再接著新增如下**:
self.selenemy = enemy;
int enemyhp,_herohp;
enemyhp = enemy.hp;
_herohp = _hero.hp;
if (_hero.attack > enemy.defense)
}} while (enemyhp >0 && _herohp >0);
}if (enemyhp <=0 )
這裡我沒還要再新增乙個建立打鬥場景的方法creatfightscene。
-(void)creatfightscene
寫到這裡我們還得再新增乙個類fightlayer ,用於建立戰鬥場景,通過敵人的編號來建立相應
的場景。
fightlayer.h**
#import #import "cocos2d.h"
@class hero;
@class enemy;
@inte***ce fightlayer : cclayer
-(id)initwith:(int) type;
@end
fightlayer.m**
#import "fightlayer.h"
#import "enemy.h"
#import "monster.h"
#import "hero.h"
#import "herohp.h"
@implementation fightlayer
-(id)initwith:(int)type
return self;
}-(void)update
else
[enemyhplable setstring:[nsstring stringwithformat:@"生命 %i",selenemy.hp]];
[herohplable setstring:[nsstring stringwithformat:@"生命 %i",hero.hp]];
}}@end
這裡我只講一下更新方法裡面的**,
if (selenemy.hp <= 0)
這個是判斷敵人是否死亡如果死亡則呼叫父節點消除敵人的方法,並把自己從父場景中消除
這個時候我們就要在game01中新增removeenemy方法。
-(void)removeenemy
好了到這裡我們的勇士就可以和怪物打鬥了
還有乙個問題就是canmove這個變數主要就是控制勇士是否可以移動,在很多地方都有用到
前面updatamove方法裡要新增乙個控制,否則有時候怪物就消除不掉,需要新增的**:
新增這樣乙個判斷就ok了。
完成之後遊戲截圖
Cocos2D iPhone開發思考
主頁 最近看了 ios 5 cocos2d遊戲開發實戰 第2版 這本書,對cocos2d這款遊戲引擎產生了濃厚的興趣。由於本書並沒有對cocos2d的前世今生做明確的交代,出於對cocos2d遊戲引擎的喜愛,我在網際網路搜尋了cocos2d相關的歷史,也看了其作者ricardo自己對cocos2d的...
關於cocos2d iphone小總結
1.導演通常只有乙個,因此這個物件是單例 signleton cocos2d iphone框架已經預定義了該例項,不需建立,我們直接使用就可以。2.director 物件管理場景的方法主要有以下幾個 1.主程式啟勱,顯示第乙個場景的方法 void runwithscene scene scene 2...
cocos2d iphone之魔塔20層第五部分
這部分教程源 連線 這一章我們就要開始在game01.m檔案中canmoveto 方法中的if迴圈中添 加相應的事件了,我在製作地圖時圖塊都設定了其屬性如圖 這裡我就要獲取其屬性值 nsdictionary props self.curtitlemap propertiesforgid enemy ...