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


现在一个基本的游戏逻辑已经搭建好了,但是感觉还是缺点什么呢?

蠢蠢的这样一直打下去你有意思吗?

怎能让无聊这样的发生!在本篇博文中,就让我们来添加2个道具:变长和变短星星.但是在创建各种不同功能的道具之前,我们必须先创建出星星来.

创建星星精灵

道具是以星星显示的,这样只要简单的改变星星的颜色就可以区分不同道具了.其实对于每个不同道具应该用更符合其功能的图片来表示.但在这里,我们从简了.

那么变长星就是是反弹棒变长的道具,变短星就是缩短反弹棒的道具.这样我们就实现了用附加的道具调整游戏难度,以增加一些趣味性.

首先打开SpriteBuilder,新建一个Star.ccb文件,类型为CCSprite.将制作好的五角星图片拖入精灵中,然后开启物理对象,并按五角星的边勾画物理边界:

注意现在星星是白色,我们将在代码中修改星星的颜色.

创建星星类

回到Xcode,新建一个Star类,继承于CCSprite.修改Star.h文件为如下内容:

#import "CCSprite.h"
#import "Comm.h"@class Stick;
@class Brick;@interface Star : CCSprite@property (nonatomic,assign) StarType starType;+(instancetype)starWithType:(StarType)type;
+(void)spawnStar:(Brick*)brick;

为了以后支持不同种类的道具星,我们需要在Comm.h里添加表示种类的枚举:

typedef enum {starTypeUnknown,starTypeStickLonger,starTypeStickShorter,starTypeThreeBalls,starTypeStickShoot,starTypeMax
}StarType;

That’s it!我们一共准备创造4种不同道具,分别是变长星,变短星,3球星以及导弹星.

打开Star.m文件,完成接口中方法的实现:

+(instancetype)starWithType:(StarType)type{CCColor *color;switch (type) {case starTypeStickLonger:color = [CCColor redColor];break;case starTypeStickShorter:color = [CCColor blackColor];break;case starTypeThreeBalls:color = [CCColor whiteColor];break;case starTypeStickShoot:color = [CCColor orangeColor];break;case starTypeUnknown:case starTypeMax:default:NSAssert(NO, @"starType invalid");break;}Star *star = (Star*)[CCBReader load:@"Elements/Star"];star.color = color;star.starType = type;return star;
}

代码很简单,我们按照type创建对应的道具星.接下来是如何在屏幕上显示它们:

//根据砖块产生对应的star
+(void)spawnStar:(Brick*)brick{Star *star;switch (brick.brickColor) {case brkColorYellow:star = [Star starWithType:starTypeStickLonger];//return;break;case brkColorRed:star = [Star starWithType:starTypeStickShorter];//return;break;case brkColorPurple:star = [Star starWithType:starTypeThreeBalls];break;case brkColorPoolBlue:star = [Star starWithType:starTypeStickShoot];break;case brkColorMax:case brkColorUnknown:NSAssert(NO, @"error brick color!");break;//默认情况不产生star,直接返回default:return;break;}star.position = brick.position;//将产生的star加入物理世界中[brick.parent addChild:star];CCPhysicsBody *physStar = star.physicsBody;NSInteger neg = arc4random_uniform(2);NSInteger rndX = arc4random_uniform(5);NSInteger rndY = arc4random_uniform(5);if (neg == 0) {neg = -1;}CGPoint velocity = ccp(rndX*neg, rndY);[star scheduleBlock:^(CCTimer *timer){[physStar applyAngularImpulse:19];[physStar applyImpulse:velocity];} delay:0];
}

星星不是无缘无故蹦出来的,只有在消灭某些砖块的时候才会掉落道具星,以上代码就是完成该功能.首先按照不同砖块产出对应的星星,然后将其加入到物理世界中,同时给其一个随机的冲力,让它掉落的更自然些.

星星类基本完成了,下面我们就来实际实现变长和缩短的道具星吧 ;)

(NO.00004)iOS实现打砖块游戏(十一):一闪一闪亮晶晶,我们都是小星星相关推荐

  1. (NO.00004)iOS实现打砖块游戏(十一):quot;一闪一闪亮晶晶,我们都是小星星quot;

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在一个基本的游戏逻辑已经搭建好了,但是感觉还是缺点什么呢? 蠢 ...

  2. (NO.00004)iOS实现打砖块游戏(一):素材的制作

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上有一 ...

  3. NO 00004 iOS实现打砖块游戏 一 素材的制作

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.   如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上 ...

  4. (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在回到GameScene.m中,我们所有的碰撞处理就放在该类中 ...

  5. exynos4412 祼机LED闪灯 - 一闪一闪亮晶晶

    一闪一闪亮晶晶,满天都是小星星-- 今天,我为你摘下一颗星,闪给你看--只有一颗喔-- <exynos4412 启动过程>一文中讲过,bootloader的作用主要是初始化操作系统启动所需 ...

  6. 2.HTML+CSS制作一闪一闪亮晶晶的星星(stars)

    2.HTML+CSS制作一闪一闪亮晶晶的星星(stars) 效果地址:https://codepen.io/flyingliao/pen/NJxbdB?editors=1100 HTML code: ...

  7. 【python turtle小demo分享】一闪一闪亮晶晶,祝你每天都开心~

    一闪一闪亮晶晶,祝你每天都开心~ demo目录 一闪一闪亮晶晶,祝你每天都开心~ 一.demo四步分解 二.实战 1.上代码 2.效果图 一.demo四步分解 把五角星的代码封装为一个函数: 将颜色设 ...

  8. 计算机音乐 一闪一闪亮晶晶,音乐:一闪一闪亮晶晶

    音乐:一闪一闪亮晶晶 发布时间:2019-03-30 活动准备: 小手铃若干 <铃儿响叮噹>磁带 小星星粘贴及太阳月亮头饰各一个,<小星星>磁带 活动过程: (一) 音乐欣赏及 ...

  9. c语言乐谱,单片机c语言一闪一闪亮晶晶的乐谱程序

    用使用定时器 T0 的中断控制播放音乐 <一闪一闪亮晶晶> 1. C 音调与频率的对应关系表 音调 低 1("dao" ) 低 2 低 3 低 4 低 5 低 6 低 ...

最新文章

  1. Java 和 C 长期霸权结束
  2. 并发编程基础篇——第二章(如何创建线程)
  3. 学习python之序言
  4. 可配置的逻辑块(CLB)
  5. 程序员的快速成长之路
  6. 面试官让你用C语言实现大数相乘,慌吗?
  7. 操作系统饥饿现象_操作系统复习
  8. 怎么把matlab中的图导出,matlab的数据能保存到excel表格-如何将matlab 中输出的图形保存到Excel中去,详细点...
  9. AtCoder ABC 127F Absolute Minima
  10. 蓝桥杯2020年第十一届C++省赛第四题-蛇形填数
  11. c语言中自定义函数的流程图这么画,c语言流程图怎么画?
  12. Visual FoxPro 6.0~9.0解决方案与范例大全写作原稿及光盘下载
  13. basler 相机取图超时,basler 相机使用出现的问题
  14. Linux评分脚本,linux必看脚本大全
  15. 《跨界杂谈》华为印象(二):MTS
  16. oracle job remove,如何删除oracle Job命令实例
  17. 进安全模式提示”Press ENTER to continue loading SPTD.sys”
  18. 自定义iTerm2主题配置(iTerm2-Color-Schemes)
  19. 解决xyplorer删除后,显示“找不到应用程序”错误
  20. A*算法求解15数码问题

热门文章

  1. 计算机总是进入休眠状态,电脑关机总是进入待机状态的处理方法
  2. 收藏:一文掌握ChatGPT/AIGC技术(附166份报告)
  3. hive中的with用法
  4. python float 精度 处理
  5. 计算机磁盘的配额设置是什么,Win10电脑怎么进行设置磁盘配额
  6. php定时任务每天零点执行,php执行定时任务
  7. VSCode常用快捷键(放大/缩小字体、切换全屏、跳转指定行数、返回上一次位置、隐藏 /显示导航、注释代码)
  8. 西交计算机学保研名单,西安交大保研情况统计表,多专业未满
  9. smali语言详解之类的声明
  10. 最大程序员交友网站 10 岁了,它长大后要成为什么