您的位置:首页 > 其它

如何使用kobold2d来做一个简单的iphone游戏教程(第六部分)

2011-12-30 18:10 841 查看
免责声明:本系列教程是根据该系列教程实践过程所作的自己使用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];


可以发现3个rect都是一样的,所以我们可以删除calculateRectWithCCSprite方法用boundingBoxInpixels或者boundingBox来替代
这样设计的原因? 通过看源码可以猜测:也许是因为本来是用boundingBoxInPixels,后来觉得这个名称命名不怎么好,但是又不能影响到以前写的代码,所以加了方法boundingBox。如果有人知道原因告诉我以下。
添加相关的背景音乐
整个游戏的背景音乐,发射子弹的声音,怪物被消灭的声音 资源地址(http://download.csdn.net/detail/xzjxylophone/3985658)
添加背景音乐,在init方法中:
[[SimpleAudioEngine sharedEngine] playEffect:@"background-music-aac.caf"];


发射子弹添加音乐,在ccTouchesEnded方法中
[player runAction:playSequence];代码后添加:
[[SimpleAudioEngine sharedEngine] playEffect:@"pew-pew-lei.caf"];


怪物被消灭后,在update方法中修改 if(isHit) 代码块:
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库提供的方法。敬请期待下一篇文章!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐