(NO.00004)iOS实现打砖块游戏(五):游戏场景类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;)
创建游戏场景类头文件
在Xcode创建新GameScene类,继承于CCNode,将其头文件替换为以下内容:
#import "CCNode.h"
@class Stick;
@interface GameScene : CCNode <CCPhysicsCollisionDelegate>
//读取GameScene中Level中的反弹棒实例
@property (atomic,strong) Stick *stickInGameScene;
//
@property (nonatomic,assign) BOOL isStickShooting;
//返回GameScene当前实例
+(instancetype)sharedGameScene;
-(CCPhysicsNode*)physicsWorld;
-(void)addBall:(CCSprite*)ball;
-(NSInteger)currentBallsCount;
@end
其中添加了一些属性和方法主要用来获取和设置游戏场景中一些必要的物件,比如小球和反弹棒等等.因为场景中需要处理物理碰撞,所以添加了物理碰撞协议,我们在后面会用到.
实现游戏场景类
在GameScene.m中实现初始化文件:
-(void)didLoadFromCCB{
//初始化内部静态变量
sharedGameScene = self;
//加载当前Level节点
GameState *gameState = [GameState sharedInstance];
_level = (Level*)[CCBReader load:gameState.currentLevel];
[self addChild:_level];
_level.zOrder = 50;
//初始化GameScene中反弹棒实例变量
self.stickInGameScene = (Stick*)[self getChildByName:@"stick" recursively:YES];
NSAssert(self.stickInGameScene, @"stickInGameScene must not nil");
//初始化得分比率
_scoreRatio = 1;
//取得Level中的物理世界对象
_physicsWorld = (CCPhysicsNode*)[self getChildByName:@"physicsWorld" recursively:YES];
NSAssert(_physicsWorld, @"physicsWorld must not nil");
//打开物理调试显示
_physicsWorld.debugDraw = YES;
//设置物理碰撞代理
_physicsWorld.collisionDelegate = self;
_userInterface.zOrder = 100;
_msgLabel.zOrder = 101;
self.userInteractionEnabled = YES;
self.zOrder = 0;
_balls = [NSMutableArray array];
_viewSize = [CCDirector sharedDirector].viewSize;
}
代码大致做了如下这些事:
- 创建自身共享实例
- 添加当前level场景,level场景我们在后面博文中讲述
- 初始化反弹棒和物理世界
- 设置各个场景的Z序
(NO.00004)iOS实现打砖块游戏(五):游戏场景类的更多相关文章
- (NO.00004)iOS实现打砖块游戏(三):游戏主场景和砖块
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 制作墙体 首先在SpriteBuilder中新建Wall.ccb ...
- (NO.00004)iOS实现打砖块游戏(八):游戏中小球与砖块的碰撞
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 现在回到GameScene.m中,我们所有的碰撞处理就放在该类中 ...
- (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 前一篇博文介绍了物理对象中小球与砖块的碰撞处理,在这一篇中我们再 ...
- (NO.00004)iOS实现打砖块游戏(六):反弹棒类
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 打砖块游戏另一个要素是反弹棒,我们在这篇类来实现反弹棒类. 创建 ...
- (NO.00004)iOS实现打砖块游戏(十六):导弹发射道具的实现(下)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇我们完成了导弹道具相关的道具制作,本篇中我们来完成其实现 ...
- (NO.00004)iOS实现打砖块游戏(二):实现游戏主界面动画
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个内容不错的游戏也要一个好的包装.玩家进入游戏时第一眼看到的是 ...
- (NO.00004)iOS实现打砖块游戏(十五):导弹发射道具的实现(上)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上一篇中我们实现了3球道具,但是好像还是不过瘾,如果能让反弹棒更 ...
- (NO.00004)iOS实现打砖块游戏(一):素材的制作
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上有一 ...
- (NO.00004)iOS实现打砖块游戏(十四):3球道具的实现
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 反弹棒变化道具实现前面已经介绍过了,我们下面可以在小球上做些文章 ...
随机推荐
- Linux文件系统的介绍
1.Linux的文件系统是一个典型的树形结构,只有一个根节点 如下图: 2.在Linux中一切皆文件 Linux 对数据文件(.mp3..bmp),程序文件(.c..h.*.o),设备文件(LCD.触 ...
- H3C系列之三层交换机系统版本升级
本文涉及到的硬件与软件交换机:H3C S3600-28TP-SItftp软件:tftpd32小软件升级的文件:S36SI_E-CMW310-R1702P44.zip 关于升级的文件说明如下: S36S ...
- Linux下打包tar.gz
将heben-addressbookinit打包成heben-addressbookinit.tar.gz格式 方式1:czvf heben-addressbookinit.tar.gz heben- ...
- 论文笔记--PCN:Real-Time Rotation-Invariant Face Detection with Progressive Calibration Networks
关键词:rotation-invariant face detection, rotation-in-plane, coarse-to-fine 核心概括:该篇文章为中科院计算所智能信息处理重点实验室 ...
- Linux c readdir是非线程安全,需用readdir_r,要注意用静态变量当做返回值的函数的非线程安全性
readdir函数: struct dirent *readdir(DIR *dirp); The data returned by readdir() may be overwritten by ...
- iOS应用启动时间
转自:iOS 知识小集 如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS,如图1所示.这样在调试时,可以在控制台打印出程序启动过程中各个 ...
- Latex 文本编辑技巧
临时取消首行缩进 \noindent 生成随机文本 \usepackage{lipsum} \begin{document} \lipsum \end{document} 多栏模式 \usepacka ...
- Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52942533 前言:前一篇介绍了 ...
- Unity角色残影特效
残影特效在网上有很多例子,比如这个,我参考着自己整合了一下,算是整合了一个比较完整且特别简单易用的出来,只需要一个脚本挂上去无需任何设定就能用. 这里只针对SkinnedMeshRenderer的网格 ...
- 从Cell类型转变成数据型
我们有一个如下的cell数据 cdata = {'1' '11' '111' '1111' '11111'}; 现在要把他转变成double型的数组,很自然会想到的方法是cell2mat,可悲的是会遇 ...