Cocos2D iOS之旅:如何写一个敲地鼠游戏(十一):完善游戏逻辑

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)


免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

好了,现在我们用userData标志来确定是否可以点击精灵,我们可以最后添加如下敲击反馈代码了:

-(void) registerWithTouchDispatcher
{
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:kCCMenuTouchPriority swallowsTouches:NO];
}

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    for (CCSprite *mole in moles) {
        if (mole.userData == FALSE) continue;
        if (CGRectContainsPoint(mole.boundingBox, touchLocation)) {

            mole.userData = FALSE;
            score+= 10;

            [mole stopAllActions];
            CCAnimate *hit = [CCAnimate actionWithAnimation:hitAnim restoreOriginalFrame:NO];
            CCMoveBy *moveDown = [CCMoveBy actionWithDuration:0.2 position:ccp(0, -mole.contentSize.height)];
            CCEaseInOut *easeMoveDown = [CCEaseInOut actionWithAction:moveDown rate:3.0];
            [mole runAction:[CCSequence actions:hit, easeMoveDown, nil]];
        }
    }
    return TRUE;
}

registerWithTouchDispatcher方法为每一次触摸设置触摸回调方法ccTouchBegan.更详细内容,你可以在 How To Make Tile Based Game with Cocos2D Tutorial中学习到.

在ccToucheBegan方法中将坐标转换为相对于该层,然后遍历每一个只地鼠.如果地鼠是不可敲击的(usrData是false)它将跳到下一只地鼠上.否则它使用CGRectContainsPoint函数检查触摸点是否在地鼠的范围之内.

如果地鼠被敲击,设置其不可再被敲击,然后增加分数.接着停止任何运行着的动作,播放”被敲时”的动画,并且立即将地鼠移动到洞里.

在最后一步 — 增加一些代码更新分数并且在tryPopMole中检查关卡是否完成的标志 :

if (gameOver) return;

[label setString:[NSString stringWithFormat:@"Score: %d", score]];

if (totalSpawns >= 50) {

    CGSize winSize = [CCDirector sharedDirector].winSize;

    CCLabelTTF *goLabel = [CCLabelTTF labelWithString:@"Level Complete!" fontName:@"Verdana" fontSize:[self convertFontSize:48.0]];
    goLabel.position = ccp(winSize.width/2, winSize.height/2);
    goLabel.scale = 0.1;
    [self addChild:goLabel z:10];
    [goLabel runAction:[CCScaleTo actionWithDuration:0.5 scale:1.0]];

    gameOver = true;
    return;

}

That’s it!编译运行你的代码,你应该看到地鼠被敲同时分数被更新!你最高能得多少分呢?

添加音效

像往常一样,让我们添加一些有趣的音效.下载 sound effects ,这是我用GarageBand和Audacity制作的,解压然后拖拽到你的Resources文件夹中.确保”Copy items into destination group’s folder”被选中,然后点击添加.

如下修改HelloWorldScene.m文件:

// Add to top of file
#import "SimpleAudioEngine.h"

// Add at the bottom of your init method
[[SimpleAudioEngine sharedEngine] preloadEffect:@"laugh.caf"];
[[SimpleAudioEngine sharedEngine] preloadEffect:@"ow.caf"];
[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"whack.caf" loop:YES];

// Add at bottom of setTappable
[[SimpleAudioEngine sharedEngine] playEffect:@"laugh.caf"];

// Add inside ccTouchBegan, inside the CGRectContainsPoint case
[[SimpleAudioEngine sharedEngine] playEffect:@"ow.caf"];

编译运行你的代码,享受这优美的曲调吧!

(下面是本猫编译运行的app效果:

)

接下来我们该做神马呢?

这里有一个 sample project 包含了迄今为止所有的内容

这就是本系列博文的全部内容(至少对于现在来说),但只要你想,为什么不自己做些其他修改呢?我觉得你可以完善的更好!

(本系列完)

时间: 2024-08-29 11:01:16

Cocos2D iOS之旅:如何写一个敲地鼠游戏(十一):完善游戏逻辑的相关文章

Cocos2D iOS之旅:如何写一个敲地鼠游戏(七):弹出地鼠

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 弹出地鼠 现在我们已经确认地鼠被放置在正确的位置上了,让我们添加它们弹出洞的代码吧. 首先,将原来999的z序改回0,使地鼠呆在地底下. 然后添加如下代码到init方法的底部

Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 高清显示和Cocos2D 好吧,有一个好消息 - 在最新版本的Cocos2D中包括了高清屏的完整支持,你可以用下面1-2-3步就可简单搞定! 在调用CCDirector的en

Cocos2D iOS之旅:如何写一个敲地鼠游戏(八):为动画建立属性列表

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 在之前的博文中,我们创建了游戏的基础 - 小可爱的地鼠从洞中呼之欲出.我们花了大量的时间思考关于如何组织素材以及坐标置位,以让我们的游戏在iphone,ipad以及高清屏上看

Cocos2D iOS之旅:如何写一个敲地鼠游戏(一):高清屏显示和UIKit

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 原文由Ray Wunderlich写成,地址在: http://www.raywenderlich.com/2560/cocos2d-tutorial-for-ios-how

Cocos2D iOS之旅:如何写一个敲地鼠游戏(四):创建TexturePacker自动脚本

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 开始吧 打开Xcode,选择新建项目,选择cocos2D模板.命名新项目为WhackAMole,点击保存. 接下来将你下载的Art文件夹拷贝到WhackAMole项目的目录中

Cocos2D iOS之旅:如何写一个敲地鼠游戏(五):设置背景

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 设置背景 接下来,打开HelloWorldScene.m文件,然后找到你的init方法.删除创建HelloWorld标签的4行,用以下代码替换: // Determine n

Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 增加游戏逻辑 现在我们准备添加游戏逻辑进来.想法是地鼠会钻出一定次数,你每敲击一次会得到一定分数.你尽可能试图多得分. 我们需要保持跟踪分数,然后把它显示给玩家.并且当地鼠结

Cocos2D iOS之旅:如何写一个敲地鼠游戏(三):素材最终解决方法

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! OK,基于以上讨论,这里是本次Cocos2D之旅中的素材准备工作: 素材将被设计在960x640大小的"可玩区域"中,在高清iphone中全屏显示,而在ipad中居

Cocos2D iOS之旅:如何写一个敲地鼠游戏(九):创建动画

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 理解上述代码非常重要,让我们一行一行的看一下: 属性列表包含在项目文件中,所以在app的"main bundle"里.这里是一个帮助方法取得属性文件在main bu