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

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

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

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

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

增加游戏逻辑

现在我们准备添加游戏逻辑进来.想法是地鼠会钻出一定次数,你每敲击一次会得到一定分数.你尽可能试图多得分.

我们需要保持跟踪分数,然后把它显示给玩家.并且当地鼠结束d出时,我们也需要让玩家知道.

打开HelloWorldScene.h文件,增加如下实例变量到HelloWorld层中:

cclabelTTF *label;int score;int totalSpawns;BOol gameOver;

这将保持跟踪分数标签,当前分数,地鼠目前一共钻出了多少次,还有游戏是否结束.

下面添加如下代码到你的init方法中:

self.istouchEnabled = YES;float margin = 10;label = [cclabelTTF labelWithString:@"score: 0" Fontname:@"Verdana" FontSize:[self convertFontSize:14.0]];label.anchorPoint = ccp(1,0);label.position = ccp(winSize.wIDth - margin,margin);[self addChild:label z:10];

代码首先为该层开启触摸,因为你在玩家点击屏幕时需要得到反馈.然后创建一个标签显示分数.注意我们将标签的锚点设置为右下,这样便于放置在屏幕的右侧.

同样注意我们没有直接传递字体的大小,它通过一个帮助函数首先去转换字体的大小.这是因为在ipad上字体大小将需要大一点,ipad的屏幕大嘛.所以让我们接下来实现convertFontSize方法:

- (float)convertFontSize:(float)FontSize {    if (UI_USER_INTERFACE_IdioM() == UIUserInterfaceIdiomPad) {        return FontSize * 2;    } else {        return FontSize;    }}

代码很简单 — 在ipad上字体大小乘2,否则保持原样.

接下来我们想增加在触摸到地鼠时得到反馈.但是首先我们需要增加一个标志用来表示当前地鼠是否可以被点击.地鼠应该只能在它笑的时候被点击 — 当它移动或者是钻入地下的时候是安全的.

我们可以创建一个CCSprite的子类去实现该标志,但是因为我们只需要存储这一个标志,我们将使用精灵类中的usrData属性来代替.so添加2个帮助方法并且再一次修改popMole方法:

- (voID)setTappable:(ID)sender {    CCSprite *mole = (CCSprite *)sender;        [mole setUserData:TRUE];}- (voID)unsetTappable:(ID)sender {    CCSprite *mole = (CCSprite *)sender;    [mole setUserData:FALSE];}- (voID) popMole:(CCSprite *)mole {    if (totalSpawns > 50) return;    totalSpawns++;    [mole setdisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByname:@"mole_1.png"]];    // Pop mole    CCMoveBy *moveUp = [CCMoveBy actionWithDuration:0.2 position:ccp(0,mole.contentSize.height)];    CCCallFunc *setTappable = [CCCallFuncN actionWithTarget:self selector:@selector(setTappable:)];    CCEaseInOut *easeMoveUp = [CCEaseInOut actionWithAction:moveUp rate:3.0];    CCAnimate *laugh = [CCAnimate actionWithAnimation:laughAnim restoreOriginalFrame:YES];    CCCallFunc *unsetTappable = [CCCallFuncN actionWithTarget:self selector:@selector(unsetTappable:)];        CCAction *easeMoveDown = [easeMoveUp reverse];    [mole runAction:[CCSequence actions:easeMoveUp,setTappable,laugh,unsetTappable,easeMoveDown,nil]];  }

它修改了popMole方法如下几个方面:

在地鼠笑之前,运行了CCCallFunc动作去调用setTappable方法.该方法设置userData属性为TRUE.我们将用来表示地鼠可以被敲击. 类似的,在地鼠笑后,调用unsetTappable方法将标志设为FALSE. 该方法在超过50次d出地鼠后将立即返回,因为在游戏中限制为50次. 在方法的开始重置精灵的显示帧为基本图片(“mole_1.png”),因为如果地鼠在最后被敲,它将保持被敲时的表情,所以我们要重置它. 总结

以上是内存溢出为你收集整理的Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑全部内容,希望文章能够帮你解决Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1075365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存