`
yangping_Account
  • 浏览: 187124 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Cocos2D-iPhone解决滚屏背景/拼接地图有黑边(缝隙)

 
阅读更多

 

 本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题;

     1. 解决滚屏背景或拼接地图有黑边!

      对于游戏开发中,背景(游戏地图)是必要的元素之一,那么对于大部分游戏的背景都是动态,或者不断移动的;例如RPG中的背景随着人物、主角而移动,那么一般情况下背景都是由地图编辑器(图块)拼出来的,要不就是直接一整张大图去显示,在或者就是将一张大图进行裁减成N张,然后再进行拼接完成等等;

      那么对于背景(地图)元素中存在的重复图块很少的话基本上就没有利用地图编辑器的必要了;在这里Himi不来介绍如何在cocos2d中使用地图编辑器做背景地图 ,而是介绍在cocos2d中制作滚动地图时利用拼接地图方式遇到的黑边问题;

     如下图所示,背景是由3张图片拼接而成,如下3张图:

                                 

     然后Himi将此3张作为3个精灵然后顺次绘制在屏幕上代码如下: 

  1. //将三张图拼成一张完整背景   
  2.         CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  3.         CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  4.         bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  5.         CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  6.         bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  7.         CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  8.         bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  9.         [self addChild:bgTile1 z:0 tag:11];  
  10.         [self addChild:bgTile2 z:0 tag:22];  
  11.         [self addChild:bgTile3 z:0 tag:33];  

 

此时运行的截图如下:


    从上图童鞋们就可以看到拼接有裂缝,那么接着让3个精灵从左向右不断的x轴+1进行移动,代码如下:

  1. //----init函数中   
  2.        //每0.1秒刷新函数move  
  3.         [self schedule:@selector(move) interval:0.1];  
  4. //move函数  
  5. -(void)move{  
  6.     CCSprite *tempSprite =(CCSprite*)[self getChildByTag:11];  
  7.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  8.     tempSprite =(CCSprite*)[self getChildByTag:22];  
  9.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  10.     tempSprite =(CCSprite*)[self getChildByTag:33];  
  11.     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  12. }  


运行截图如下:

 

   这时当移动到一定距离时候会发现刚才的缝隙消失了,是消失了,通过以上两张运行效果图可以说明:

     在cocos2d中如图你使用拼接背景地图的方式去做的话,每处拼接处在移动时都会时不时的出现黑边(裂缝),至于如何解决我想童鞋们第一想法就是在裁图的时候多切出一像素的方法,第一张比如原来是100,故意裁出101,第二张绘制的时候X轴前一个像素...以此类推,还有些童鞋认为是美工的原因,可能在裁图的时候有透明像素的存在造成,当然美工裁图的不仔细确实是个不可排除的原因,但是最终解决的方案应该是将精灵设置贴图无锯齿的属性,这样就可以完美解决此问题,设置精灵贴图无锯齿方法如下:

  1. [CCSprite.texture setAliasTexParameters];  


    我们将这句添加上之后再次运行,代码更改如下:

  1. //将三张图拼成一张完整背景   
  2. CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  3. CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  4. bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  5. CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  6. bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  7. CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  8. bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  9. //让3个精灵都设置贴图无锯齿  
  10. [bgTile1.texture setAliasTexParameters];  
  11. [bgTile2.texture setAliasTexParameters];  
  12. [bgTile3.texture setAliasTexParameters];  
  13. [self addChild:bgTile1 z:0 tag:11];  
  14. [self addChild:bgTile2 z:0 tag:22];  
  15. [self addChild:bgTile3 z:0 tag:33];  

 

再次运行效果图如下:

  OK,完美解决;


 2.下面介绍第二个问题:如何禁止手机自动锁屏的问题;

     对于手机自动锁屏的问题一般都是在项目尾声的时候发现由于手机自动锁屏所带来的各种问题,例如,在cocos2d中我们调用暂停游戏的函数后,如果用户无操作,手机自动锁屏后,解锁再次进入游戏就会发现游戏不处于暂停了,(如果你有暂停界面的话,你将看到你暂停界面存在,而后面的游戏照常运行- -)

    那么这里Himi给出在应用中禁止手机自动锁屏的代码,如下:

  1. [[UIApplication sharedApplication] setIdleTimerDisabled:YES];  


 

     OK,本章介绍的知识点虽然很少解决的方法也很简单,但是也是游戏中最容易遇到的两个问题;

 

     那么这里肯定会有不少童鞋认为本身一句代码的事情非写这么多进行说明,嗯 ,确实写的过于详细,但是Himi之所以写这么详细主要还是想让还没有遇到此类问题的童鞋清晰化此类问题出现的原因,这样能让更多童鞋减少以后遇到此问题的疑问~


 

【2011年11月17日补充】:

       如果解决拼接裂缝问题利用下面这行代码还是不给力的话 : 

  1. [sprite.texture setAliasTexParameters];  


 

      那么请继续利用下面这行代码:(放在AppDelegate.m  的 applicationDidFinishLaunching方法中最后即可)

 


  1. [[CCDirector sharedDirector] setProjection:kCCDirectorProjection2D];  

 

   【如果以上方法都不好使,那么请你不要将背景图利用打包工具进行打包了,直接利用不打包的来做,然后对每个背景图块进行设置texture setAliasTexParameters】绝对能解决背景裂缝的问题啦!

 

分享到:
评论

相关推荐

    cocos2d-iphone 2.1 第一部分

    继续输入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实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-扩展动作 http://blog.csdn.net/tt5267621/article/details/7626450

    cocos2d-iphone-2.0.tar.gz

    免费、开源的2D游戏开发引擎,适用于iphone、ipad游戏开发。

    cocos2d-iphone~cocos2d-html5移植之旅

    cocos2d-iphone~cocos2d-html5移植之旅

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作

    【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-瞬时动作 http://blog.csdn.net/tt5267621/article/details/7624781

    cocos2d-x-3.2旧版引擎下载

    cocos2d-x-3.2下载,不多说。或者可以下载另一个资源 cocos引擎老版本集合(cocos2d-x-2.2.1 - 3.5) http://download.csdn.net/download/crazymagicdc/9982656

    Cocos2D-iPhone

    Cocos2D-iPhone是 一个开源框架,利用它可以非常容易的在iPhone上开发2D游戏。它提供了物理,精灵(sprites),时差卷轴(parallax scrolling),支持iPhone touch和accelerator等很多功能。

    Cocos2D-iPhone开发教程

    Cocos2D-iPhone开发教程,从易到难,适合新手学习,老手进阶

    cocos2d-x-2.1.5

    cocos2d-x-2.1.5

    cocos2d-objc-ext, Cocos2D iphone的扩展和实用程序类.zip

    cocos2d-objc-ext, Cocos2D iphone的扩展和实用程序类 Cocos2D扩展cocos2d-iphone的扩展和实用程序类。cocos2d-iphone-ext,将包括不同的类和库,而不是suitet发布的官方 cocos2d-iphone 。 一些类最初可以能会被...

    知易Cocos2D-iPhone开发教程源代码

    知易Cocos2D-iPhone开发教程源代码。 移动开发新手入门必备。

    cocos2d-x事件类

    在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...

    大富翁手机游戏开发实战基于Cocos2d-x3.2引擎

    资源名称:大富翁手机游戏开发实战基于Cocos2d-x3.2引擎内容简介:李德国编著的《大富翁手机游戏开发实战(基于 Cocos2d-x3.2引擎)》使用Cocos2d-x游戏引擎技术,带领读者一步一步从零开始进行大富翁移动游戏的开发...

    Cocos2d-x高级开发教程

    Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...

    Cocos2d-iphone之HelloWorld

    Cocos2d-iphone之HelloWorld

    Cocos2d-html5 references/cocos2d-html5文档

    cocos2d-html5的api文档,官方未提供离线版,本人hack下来的,与在线版本完全一致,希望有用 :)

    4.[开源][安卓]cocos2d-x-3-框架源码

    cocos2d-x是一个开源的支持多平 台的2D游戏框架,使用C++开发,基于cocos2d-iphone,在MIT许可证下发布。主分支在GitHub上使用OpenGL ES 2.0渲染,而旧版gles11分支则使用OpenGL ES 1.1渲染。 支持iOS、Android、...

    子龙山人兄弟翻译cocos2d-iphone教程.rar

    子龙山人兄弟翻译cocos2d-iphone教程.rar 学习游戏开发的可以看看,非常好的入门教程

    cocos-2d-iphone 第二部分

    继续输入cd Cocos2d-iPhone-0.99.5(cd Cocos2d-iPhone-0.99.5为解压的cocos2d文件夹名称)进入cocos2d文件夹中。 4。继续输入./install-templates.sh则打开你文件夹下面的install-templates.sh进行cocos2d的安装。...

Global site tag (gtag.js) - Google Analytics