- 浏览: 191747 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
luoqianjiang:
很好,谢谢
一些iOS高效开源类库 -
sgjsdf5944:
没看明白。。。。。。。。。。
UIWebView打开doc、pdf文件 -
593864589:
mac 上不支持呢?
cocos2d 粒子设计器 -
寻墨小楼:
多谢了...正在弄这个。
mysql for mac 安装和基本操作 -
yueliancao:
楼主如何联系啊 我的MAC系统 #LoadModule php ...
mac OS x中配置apache + php + mysql
本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题;
1. 解决滚屏背景或拼接地图有黑边!
对于游戏开发中,背景(游戏地图)是必要的元素之一,那么对于大部分游戏的背景都是动态,或者不断移动的;例如RPG中的背景随着人物、主角而移动,那么一般情况下背景都是由地图编辑器(图块)拼出来的,要不就是直接一整张大图去显示,在或者就是将一张大图进行裁减成N张,然后再进行拼接完成等等;
那么对于背景(地图)元素中存在的重复图块很少的话基本上就没有利用地图编辑器的必要了;在这里Himi不来介绍如何在cocos2d中使用地图编辑器做背景地图 ,而是介绍在cocos2d中制作滚动地图时利用拼接地图方式遇到的黑边问题;
如下图所示,背景是由3张图片拼接而成,如下3张图:
然后Himi将此3张作为3个精灵然后顺次绘制在屏幕上代码如下:
- //将三张图拼成一张完整背景
- CGSize screenSize =[[CCDirector sharedDirector]winSize];
- CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];
- bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);
- CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];
- bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);
- CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];
- bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);
- [self addChild:bgTile1 z:0 tag:11];
- [self addChild:bgTile2 z:0 tag:22];
- [self addChild:bgTile3 z:0 tag:33];
从上图童鞋们就可以看到拼接有裂缝,那么接着让3个精灵从左向右不断的x轴+1进行移动,代码如下:
- //----init函数中
- //每0.1秒刷新函数move
- [self schedule:@selector(move) interval:0.1];
- //move函数
- -(void)move{
- CCSprite *tempSprite =(CCSprite*)[self getChildByTag:11];
- tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));
- tempSprite =(CCSprite*)[self getChildByTag:22];
- tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));
- tempSprite =(CCSprite*)[self getChildByTag:33];
- tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));
- }
这时当移动到一定距离时候会发现刚才的缝隙消失了,是消失了,通过以上两张运行效果图可以说明:
在cocos2d中如图你使用拼接背景地图的方式去做的话,每处拼接处在移动时都会时不时的出现黑边(裂缝),至于如何解决我想童鞋们第一想法就是在裁图的时候多切出一像素的方法,第一张比如原来是100,故意裁出101,第二张绘制的时候X轴前一个像素...以此类推,还有些童鞋认为是美工的原因,可能在裁图的时候有透明像素的存在造成,当然美工裁图的不仔细确实是个不可排除的原因,但是最终解决的方案应该是将精灵设置贴图无锯齿的属性,这样就可以完美解决此问题,设置精灵贴图无锯齿方法如下:
- [CCSprite.texture setAliasTexParameters];
我们将这句添加上之后再次运行,代码更改如下:
- //将三张图拼成一张完整背景
- CGSize screenSize =[[CCDirector sharedDirector]winSize];
- CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];
- bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);
- CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];
- bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);
- CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];
- bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);
- //让3个精灵都设置贴图无锯齿
- [bgTile1.texture setAliasTexParameters];
- [bgTile2.texture setAliasTexParameters];
- [bgTile3.texture setAliasTexParameters];
- [self addChild:bgTile1 z:0 tag:11];
- [self addChild:bgTile2 z:0 tag:22];
- [self addChild:bgTile3 z:0 tag:33];
OK,完美解决;
2.下面介绍第二个问题:如何禁止手机自动锁屏的问题;
对于手机自动锁屏的问题一般都是在项目尾声的时候发现由于手机自动锁屏所带来的各种问题,例如,在cocos2d中我们调用暂停游戏的函数后,如果用户无操作,手机自动锁屏后,解锁再次进入游戏就会发现游戏不处于暂停了,(如果你有暂停界面的话,你将看到你暂停界面存在,而后面的游戏照常运行- -)
那么这里Himi给出在应用中禁止手机自动锁屏的代码,如下:
- [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
OK,本章介绍的知识点虽然很少解决的方法也很简单,但是也是游戏中最容易遇到的两个问题;
那么这里肯定会有不少童鞋认为本身一句代码的事情非写这么多进行说明,嗯 ,确实写的过于详细,但是Himi之所以写这么详细主要还是想让还没有遇到此类问题的童鞋清晰化此类问题出现的原因,这样能让更多童鞋减少以后遇到此问题的疑问~
【2011年11月17日补充】:
如果解决拼接裂缝问题利用下面这行代码还是不给力的话 :
- [sprite.texture setAliasTexParameters];
那么请继续利用下面这行代码:(放在AppDelegate.m 的 applicationDidFinishLaunching方法中最后即可)
- [[CCDirector sharedDirector] setProjection:kCCDirectorProjection2D];
发表评论
-
cocos2d游戏开发,常用工具集合
2012-01-07 13:42 788位图字体工具Bitmap Font ToolsBMFont ( ... -
cocos2d-x开源游戏引擎发布0.10.0版,支持iphone/android/bada/win32/linux平台
2012-01-02 22:28 1524cocos2d-1.0.1-x-0.10.0版本 http:/ ... -
详解CCProgressTimer 进度条
2012-01-06 00:05 1036原文地址:http://blog.csdn.net/xi ... -
Cocos2D-iPhone-Extensions嵌入视频播放
2012-01-06 00:05 758原文地址:http://blog.csdn.net ... -
CCSprite利用Bezier(贝塞尔)做抛物线动作
2012-01-06 00:05 868原文地址:http://blog.csdn.net/xi ... -
浅析使用C++/C/OC在iOS游戏中混编
2012-01-11 22:10 1196原文地址:http://blog.csdn.net/xi ... -
使用Box2d物理系统
2012-01-11 22:10 863原文地址:http://blog.csdn.net/ ... -
添加粒子特效并解决粒子系统特效与Layer之间的坐标问题
2012-01-11 22:11 829原文地址:http://blog.csdn.net/ ... -
对触屏事件追加讲解,解决无法触发ccTouchMoved事件
2012-01-11 22:11 1013原文地址:http://blog.csdn.net/xi ... -
从零开始学习OpenGL ES之二 – 简单绘图概述
2012-01-02 22:29 1363还有许多理论知识需要讨论,但与其花许多时间在复杂的数学 ... -
一. 搭建cocos2d游戏引擎环境HelloWorld!
2012-01-29 16:05 729注意:本文经 Himi 论坛ID:xiaom ... -
CCSpeed实现CCAnimate动画进行时设置慢动作
2012-01-30 13:48 1076原文地址:http://bl ... -
Cocos2D自定义精灵类并为你的精灵设置攻击帧
2012-01-30 13:49 915上周貌似没有写新的博文,那么今天Himi写个精品的博文 ... -
Cocos2D-iPhone精灵的基础知识点总汇
2012-03-06 09:41 985最近写了不少Cocos2d的博文了,那么由于Him ... -
Cocos2D-iPhone游戏数据存储的四种常用方式
2012-03-06 09:41 1417首先向大家说句抱歉,可能一些童鞋看到我的微薄了,我说突然 ... -
灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint)
2012-03-06 09:42 1039今天Himi单用一篇博文来给童鞋们介绍精灵相关 ... -
Cocos2D-iPhone添加本地通知(UILocalNotification)
2012-03-06 09:42 1770首先申明下:希望大家转载的时候不要忘记给原文连接, ... -
详解CCProgressTimer 进度条
2012-03-09 17:43 1018游戏开发中难免用到进度条,例如做一些游戏技能的C ... -
Cocos2D-iPhone-Extensions嵌入视频播放
2012-03-09 17:43 817自从Himi书籍《Android游戏编程之从零开始》一 ... -
CCSprite利用Bezier(贝塞尔)做抛物线动作
2012-03-09 17:43 1808如果我们想实现让CCSprite进行抛物线运动的话,那么 ...
相关推荐
6. **Tile Maps**:Cocos2d-iPhone支持TMX格式的瓦片地图,允许开发者创建复杂的2D关卡布局,同时支持层、对象组和属性。 7. **Particles System**:内置的粒子系统允许创建各种视觉效果,如火焰、烟雾、雪花等,极...
### cocos2d-iphone至cocos2d-html5移植之旅:深入解析与实践指南 #### 引言 在数字化时代,跨平台游戏开发成为了一种趋势,尤其在移动设备和网页端之间的转换变得日益频繁。《cocos2d-iphone至cocos2d-html5移植...
继续输入cd Cocos2d-iPhone-0.99.5(cd Cocos2d-iPhone-0.99.5为解压的cocos2d文件夹名称)进入cocos2d文件夹中。 4。继续输入./install-templates.sh则打开你文件夹下面的install-templates.sh进行cocos2d的安装。...
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
在iOS游戏开发中,Cocos2d-x是一个广泛使用的2D游戏引擎,其Cocos2d-iPhone版本专为Objective-C编程语言设计。本主题主要关注Cocos2d-iPhone中的“动作”(Actions)机制,这是一个强大的工具,用于创建各种动画效果...
对于游戏的音效和音乐管理,cocos2d-iphone提供了丰富的API,使得开发者能够轻松添加背景音乐和交互音效,提升游戏体验。 教程还将涉及cocos2d-iphone的扩展功能,如粒子系统(Particle System)用于创建华丽的特效...
7. **扩展性**:正如压缩包名所示,cocos2d-iphone有许多社区开发的扩展,如菜单(Menu)、粒子系统(Particle System)、图块地图(Tile Map)等,这些扩展增强了框架的功能。 在压缩包中的"e42002b"版本,可能...
双击上图中的 cocos2d-win32.vc2010.sln(如果你使用的是 vs2008,那么只双击cocos2d-win32.vc2008.sln),然后右键点解决方案,再点生成解决方案。这个过程大约有 10 分钟,因个人电脑速度而异。 三、运行 Cocos2d...
《Cocos2d-x实战 JS卷 Cocos2d-JS开发》是一本深入探讨Cocos2d-x游戏引擎JavaScript版本使用的专业书籍。Cocos2d-x是全球范围内广泛采用的游戏开发框架,尤其适用于2D游戏的制作,而Cocos2d-JS则是其JavaScript接口...
目前已经有超过100款基于Cocos2d-iPhone的游戏在AppStore上发布,其中不乏成功案例,比如StickWars曾一度登上AppStore排行榜榜首,这证明了Cocos2d-iPhone不仅高效而且能够支持复杂的2D游戏开发。 #### 三、Cocos2d...
《Cocos2d-x 3.x游戏开发实战》是一本深度探讨Cocos2d-x 3.x框架的游戏开发书籍,适合对游戏编程有兴趣的开发者学习。Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的...
cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...
Cocos2d-JS是一款强大的2D游戏开发框架,它结合了JavaScript的灵活性与Cocos2d-x的高效性能,让开发者能够轻松地创建跨平台的游戏。本篇将深入探讨Cocos2d-JS的游戏开发知识,从基础到进阶,帮助你掌握这一利器。 ...
Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,Cocos2d-x对Spine动画引擎的集成进行了更新,这...
这个压缩包“cocos2d-x-cocos2d-x-2.2.2.zip”包含了cocos2d-x 的2.2.2版本,该版本是cocos2d-x发展中的一个重要里程碑,它提供了许多改进和优化,使得开发者能够更加高效地创建2D游戏和应用。 在cocos2d-x 2.2.2中...
《Cocos2d-x实战:C++卷(2版)源代码》这本书是关于使用Cocos2d-x游戏引擎进行游戏开发的专业指南。Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言...
《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...
标题中提到了"Cocos2d-x实战++JS卷++Cocos2d-JS开发+PDF电子书下载+带书签目录+完整",这里面包含了几个关键知识点: 1. Cocos2d-x:是一个开源的游戏开发框架,它主要用于开发跨平台的游戏和应用程序,支持iOS、...
这个压缩包“cocos2d-x-3.1.zip”包含了Cocos2d-x框架的3.1版本,这是一个经典且相对旧的版本,可能对于那些寻找历史版本或者想要研究早期游戏开发技术的人来说非常有价值。由于官方网站已经不再提供这个版本的直接...
Cocos2D-iPhone是一款强大的2D游戏开发框架,它为iOS平台提供了丰富的功能和工具,使得开发者可以轻松创建各种游戏和互动应用。本教程旨在引导新手入门,并帮助经验丰富的开发者提升技能。以下是对Cocos2D-iPhone...