守卫者教程第一部分
不知道大家玩过这款魔幻塔防游戏没,我感觉很经典,就自己做了一个ios版的
我们先来说一下我们这款游戏的主要界面
1、游戏菜单场景
2、选择游戏场景
3、研究场景
4、游戏场景
我们的教程第一部分是要添加菜单场景。
首先我们基于cocos2d2.0建一个项目项目名称为守卫者,建成之后直接把HelloWorldLayer和IntroLayer都删除掉,这里我们用不到。
然后我们在项目中添加两个类SceneManager(场景管理器)和MenuLayer(菜单场景层),首先我们来创建我们的菜单场景界面。
我们在MenuLayer.m中添加初始化方法:
#pragma mark - 场景的基本方法
//初始化init方法
-(id) init
{
if ((self = [superinit]))
{
CGSize size = [[CCDirectorsharedDirector]winSize];
//菜单背景
CCSprite *sp = [CCSpritespriteWithFile:@"cover.jpg"];
sp.position =ccp(size.width/2, size.height /2);
[selfaddChild:spz:0tag:1];
//建立开始菜单
CCMenuItemImage *newGame = [CCMenuItemImageitemWithNormalImage:@"cover_button_start_up.png"selectedImage:@"cover_button_start_down.png"target:selfselector:@selector(onStart)];
CCMenu *menu1 = [CCMenumenuWithItems:newGame,nil];
[selfaddChild:menu1];
menu1.position =ccp(size.width-50, size.height -97);
//建立成就菜单
CCMenuItemImage *honor = [CCMenuItemImageitemWithNormalImage:@"cover_button_honor_up.png"selectedImage:@"cover_button_honor_down.png"target:selfselector:@selector(onHonor)];
CCMenu *menu2 = [CCMenumenuWithItems:honor,nil];
[selfaddChild:menu2];
menu2.position =ccp(size.width-58, size.height -158);
//建立开始菜单
CCMenuItemImage *more = [CCMenuItemImageitemWithNormalImage:@"cover_button_more_up.png"selectedImage:@"cover_button_more_down.png"target:selfselector:@selector(onStart)];
CCMenu *menu3 = [CCMenumenuWithItems:more,nil];
[selfaddChild:menu3];
menu3.position =ccp(size.width-73, size.height -213);
//建立成就菜单
CCMenuItemImage *share = [CCMenuItemImageitemWithNormalImage:@"cover_button_share_up.png"selectedImage:@"cover_button_share_down.png"target:selfselector:@selector(onHonor)];
CCMenu *menu4 = [CCMenumenuWithItems:share,nil];
[selfaddChild:menu4];
menu4.position =ccp(size.width-79, size.height -265);
//建立背景音乐开关菜单
CCMenuItem *musicOn = [CCMenuItemImageitemWithNormalImage:@"zzz_button_music_on.png"selectedImage:@"zzz_button_music_on.png"target:selfselector:nil];
CCMenuItem *musicOff = [CCMenuItemImageitemWithNormalImage:@"zzz_button_music_off.png"selectedImage:@"zzz_button_music_off.png"target:selfselector:nil];
CCMenuItemToggle *musicOnOff = [CCMenuItemToggleitemWithTarget:selfselector:@selector(onHonor)items:musicOn,musicOff,nil];
CCMenu *menu5 = [CCMenumenuWithItems:musicOnOff,nil];
[selfaddChild:menu5];
menu5.position =ccp(60,180);
//建立游戏音效开关菜单
CCMenuItem *soundOn = [CCMenuItemImageitemWithNormalImage:@"button_sound_on.png"selectedImage:@"button_sound_off.png"target:selfselector:nil];
CCMenuItem *soundOff = [CCMenuItemImageitemWithNormalImage:@"button_sound_off.png"selectedImage:@"button_sound_on.png"target:selfselector:nil];
CCMenuItemToggle *soundOnOff = [CCMenuItemToggleitemWithTarget:selfselector:@selector(onHonor)items:soundOn,soundOff,nil];
CCMenu *menu6 = [CCMenumenuWithItems:soundOnOff,nil];
[selfaddChild:menu6];
menu6.position =ccp(90,175);
}
return self;
}
然后再添加菜单项的响应方法:
#pragma mark - 菜单事件
//进入游戏
-(void) onStart
{
[SceneManager goStart];
}
//进入成就榜
-(void) onHonor
{
return;
}
//关于游戏
-(void) onMore
{
return;
}
//分享成就
-(void) onShare
{
return;
}
还需要在文件顶部引用#import "SceneManager.h"
好了我们来添加SceneManager文件中的代码吧。首先我们要在头文件中添加一些公开的类方法:
//类方法实现场景切换
+(void) goMenu;
+(void) goStart;
+(void) goResearch;
+(void) goCredits;
+(void) goGameover;
+(void) goWin;
并在实现文件(.m)中添加私有方法:
//私有的类方法
@interface SceneManager ()
+(void) go:(CCLayer*) layer;
+(CCScene*) wrap:(CCLayer*) layer;
@end
然后我们实现文件中添加这些方法:
//进入菜单
+(void) goMenu
{
CCLayer *layer = [MenuLayernode];
[selfgo:layer];
}
//开始新的游戏
+(void) goStart
{
}
//进入研究升级场景
+(void) goResearch
{
}
//积分
+(void) goCredits
{
}
//游戏结束场景
+(void) goGameover
{
}
//游戏胜利界面
+(void) goWin
{
}
//切换场景
+(void) go:(CCLayer*) layer
{
CCDirector *director = [CCDirectorsharedDirector];
CCScene *newScene = [SceneManagerwrap:layer];
if ([directorrunningScene]) {
[directorreplaceScene:newScene];
}
else{
[directorrunWithScene:newScene];
}
}
//添加场景
+(CCScene*) wrap:(CCLayer*) layer
{
CCScene *newScene = [CCScenenode];
[newSceneaddChild:layer];
return newScene;
}
这些工作做好之后我们要在AppDelegate.m文件中修改一些代码:
首先修改头文件引用把"IntroLayer.h"改成"SceneManager.h"
然后我们把
-(void) directorDidReshapeProjection:(CCDirector*)director
方法中的代码换成[SceneManager goMenu];
之后运行一下我们的菜单场景就出来了,对了还需要把iOS设备修改成Iphone(Retina)高清模式。
运行成功就会出现我们游戏菜单场景。