免责声明:本系列教程是根据该系列教程实践过程所作的自己使用kobold2D框架经历。仅供学习与交流使用,请勿进行商业传播,转载时不要移除本声明。如果产生任何纠纷均与博客所有者无关。欢迎转载。
作者:Rush.xzj
这篇主要完成如下2个功能
1.获取CCSprite所在的矩形区域
2.添加游戏的相关背景音乐
获取CCSprite所在的矩形区域
在上一篇文章中我们已经通过一个函数计算出Sprite矩形区域,可是Kobold2D(cocos2D)框架号称功能非常齐全的啊。不应该没有计算区域的办法,我们通过代码指导发现CCSprite如下2个函数可疑
- (CGRect) boundingBoxInPixels { CGRect rect = CGRectMake(0, 0, contentSizeInPixels_.width, contentSizeInPixels_.height); return CGRectApplyAffineTransform(rect, [self nodeToParentTransform]); }
- (CGRect) boundingBox { CGRect ret = [self boundingBoxInPixels]; return CC_RECT_PIXELS_TO_POINTS( ret ); }
在观看宏:CC_RECT_PIXELS_TO_POINTS
#define CC_RECT_PIXELS_TO_POINTS(__pixels__) __pixels__好吧,我姑且认为这2个函数是一样的(不知道为什么是这样设计的,如果有人有其他想说的可以回复我)
CGRect rect2 = [selectMonster boundingBox]; CGRect rect3 = [selectMonster boundingBoxInPixels]; CGRect selectMonsterRect = [self calculateRectWithCCSprite:selectMonster];
这样设计的原因? 通过看源码可以猜测:也许是因为本来是用boundingBoxInPixels,后来觉得这个名称命名不怎么好,但是又不能影响到以前写的代码,所以加了方法boundingBox。如果有人知道原因告诉我以下。
添加相关的背景音乐
整个游戏的背景音乐,发射子弹的声音,怪物被消灭的声音 资源地址(http://download.csdn.net/detail/xzjxylophone/3985658)
添加背景音乐,在init方法中:
[[SimpleAudioEngine sharedEngine] playEffect:@"background-music-aac.caf"];
[player runAction:playSequence];代码后添加:
[[SimpleAudioEngine sharedEngine] playEffect:@"pew-pew-lei.caf"];
if(isHit) { Monster *hitMonster = (Monster *)deleteMonster; hitMonster.curHp--; [deleteProjectiles addObject:selectProjectile]; if(hitMonster.curHp <= 0) { [self removeChild:deleteMonster cleanup:YES]; [monsters removeObject:deleteMonster]; [[SimpleAudioEngine sharedEngine] playEffect:@"explosion.caf"]; } else { //[[SimpleAudioEngine sharedEngine] playEffect:@"explosion1.caf"]; } }
到此为止,本篇教程就结束了。
该篇主要是介绍了添加声音和充分你利用Kobold2D库提供的方法。敬请期待下一篇文章!