守卫者游戏开发教程之cocos2d-iphone2.0第一部分(菜单场景)

守卫者教程第一部分

不知道大家玩过这款魔幻塔防游戏没,我感觉很经典,就自己做了一个ios版的

我们先来说一下我们这款游戏的主要界面

1、游戏菜单场景

屏幕快照 2013-03-11 下午8.25.13.png

2、选择游戏场景

屏幕快照 2013-03-12 上午10.57.01.png

3、研究场景

屏幕快照 2013-03-12 上午10.59.05.png

4、游戏场景

屏幕快照 2013-03-12 上午10.59.28.png


我们的教程第一部分是要添加菜单场景。

首先我们基于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)高清模式。

运行成功就会出现我们游戏菜单场景。

游戏素材


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值