【IOS-COCOS2D游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/图片缩放后模糊透明/图片不清晰【2013年12月13日补充】/动画播放出现毛边以及禁止游戏中自动锁屏问题!

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/507.html

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

//将三张图拼成一张完整背景  

        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进行移动,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

//----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轴前一个像素…以此类推,还有些童鞋认为是美工的原因,可能在裁图的时候有透明像素的存在造成,当然美工裁图的不仔细确实是个不可排除的原因,但是最终解决的方案应该是将精灵设置贴图无锯齿的属性,这样就可以完美解决此问题,设置精灵贴图无锯齿方法如下:

1

[CCSprite.texture setAliasTexParameters];

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//将三张图拼成一张完整背景  

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,完美解决;

【2013年12月13日补充】:

对于裂缝、黑边、模糊、透明等问题,这里Himi再详细描述补充下:

 

1. 首先如果你使用TP(Texturepacker)进行的图片打包的话:

首先确定是否打包时,帧之间保证了>=1像素距离。

然后确定是否勾选了”premultply alhpa” 这一项(应该勾选)

最后确认你项目中是否设置了如下代码:

CCTexture2D::PVRImagesHavePremultipliedAlpha(true);

如上代码设置的作用是

2. 图片缩放后模糊透明问题

首先cocos2d/cocos2dx引擎中,默认的贴图设置了抗锯齿,如下函数:

setAntiAliasTexParameters()//设置抗锯齿 (但是会模糊透明)

那么缩放后的图片由于设置了抗锯齿会造成图片边缘模糊透明,所以对此的解决方式,我们单独处理缩放的图进行设置非抗锯齿,如下函数:

setAliasTexParameters() //设置非抗锯齿 (但是不抗锯齿)

3.图片感觉模糊不清晰

首先对于此问题的原因是:引擎默认使用的是透视投影模式,此模式的效果为近大远小的效果,所以远处的则模糊不清晰

所以我们如果想让整体所有贴图清晰,那么我们可以设置引擎为正交投影模式即可,如下代码设置:

CCDirector::sharedDirector()->setProjection(kCCDirectorProjection2D);

 

                          如果还不行,宝贝们,你们赢了!只要以上方法都尝试过100%没问题的!!!!!!

 

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

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

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

1

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

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

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

时间: 2024-10-11 21:08:32

【IOS-COCOS2D游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)/图片缩放后模糊透明/图片不清晰【2013年12月13日补充】/动画播放出现毛边以及禁止游戏中自动锁屏问题!的相关文章

【IOS-COCOS2D-X 游戏开发之十五】COCOS2DX中响应ANDROID的BACK(返回)与MENU(小房子)事件&&COCOS2DX自动释放粒子内存函数!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/792.html 本篇介绍两个常用知识,一个是粒子的自动释放机制函数,因为不少童鞋说cocos2dx为什么没有? 其实是没找到,这里特意拿出来说下!另外一个是如何响应Android的Menu菜单和Back返回事件的方法: 首先对于Cocos2dx中对于粒子自动释放的函数Himi这里给出,不少童鞋都在群里或者论坛

【IOS-COCOS2D-X 游戏开发之十二】自定义COCOS2DX摇杆(增强JOYSTICK),增加摇杆跟随用户触点作为摇杆坐标,让摇杆不再死板!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/iphone-cocos2dx/721.html 对于虚拟摇杆在游戏开发中必不可少,Android方面的是由Himi自己实现封装的,大家可以移步到这里查看详细实现机制: [Android游戏开发二十四]360°平滑游戏摇杆(触屏方向导航)  那么在Cocos2d引擎已提供此摇杆类(Joystick),所以Himi也就懒得重写了,但是Cocos

Windows 8风格应用开发入门 十八 基础控件I

ProgressRing: ProgressRing控件常见的效果图: 开发入门 十八 基础控件I-书法入门十八法"> 如何在XAML代码中声明ProgressRing控件呢?代码如下: ProgressRing控件包含IsActive属性,该属性控制ProgressRing控件是否激活可用.默认情况下IsActive属性值为Ture,我们也可以将其值设置为False. 另外我们也可以在C#代码中声明ProgressRing控件,添加到布局控件中.代码可以如下: 关于ProgressRin

直击游戏行业音视频应用——12月2日livevideostack Meet成都沙龙

活动时间 2017年12月2日 12:00 - 2017年12月2日 17:00 活动地点 四川成都 高新区天府五街200号菁蓉国际广场3号楼9楼 活动概述 2017年,许多直播App面临着并购和转型,如直播与短视频和游戏或将更多的结合.在这样的背景下,直播技术还会有哪些突破呢?比如,在特定场景下的连麦与多人共享白板技术,读写分离的低成本海量视频存储方案,AI抠像技术,面向海外市场的CDN网络架构等等,这些会成为新一波技术趋势吗?同时,苹果全力支持WebRTC,Google推进的下一代编解码器A

韩服《大灾变》12月9日公测可免费游戏11天

本网(编译/小熙)韩媒报道,<魔兽世界>第三个资料片<大灾变>即将于下月9日正式上线,而令韩国玩家兴奋的是,12月9日起,玩家可以免费游戏11天之久. 暴雪韩国分社社长昨天晚间表示,G★上将提供新版本的试玩活动,并将公布一系列新版本的庆典.更新活动. 而无论是付费用户,还是免费试玩用户,都可以进行11天的免费游戏. 在韩国,<魔兽世界>的每个资料片都有很长一段时间的免费公测期,最近一次的<巫妖王>免费游戏了两周. <大灾变>中包含最终BOSS--

《C9》中文名12月4日公布游戏COS抢先亮相

12月4日,2010腾讯游戏嘉年华正式开幕,多玩记者注意到腾讯嘉年华的日程表上透露,备受玩家期待的韩国战争新游<C9>将在明日(12月5日)公布中文名,今日展会现场已经提前上演了<C9>的精彩COS.[page]

国行Xbox One游戏光盘将于12月1日上架销售

虽然微软已经为国行XboxOne玩家提供了多款数字版游戏,但是由于网络条件等因素,下载过程并不是很顺利.微软近日宣布,首批国行XboxOne蓝光光盘版游戏将于12月1日上架销售,届时玩家可以到Xbox授权零售店或线上购买.国行XboxOne游戏光盘12月1日上架销售(图片来自TotalXbox)据悉,首批上架的国行XboxOne蓝光光盘版游戏包括五款已上市的作品:<极限竞速5>.<体育竞技>.<动物园大亨>.<雷曼传奇>.<特技摩托:聚变>.此外

《辐射3:年度游戏版》将10月13日发售

这个年度游戏版包含PC.Xbox 360和 PS3平台 Bethesda近日宣布,<辐射3 年度游戏版>(Fallout 3 Game of the Year Edition )将于10月13日发售.这个年度游戏版包含PC.Xbox 360和 PS3平台,内容包括原作和全部5个DLC.PC版定价为50美元,Xbox 360和PS3版定价为60美元.

2012移动游戏大会于12月20日在成都召开

和讯科技消息 11月20日,由成都市http://www.aliyun.com/zixun/aggregation/38595.html">人民政府.移动游戏发展联盟.中国移动通信联合会主办,人民网(603000,股吧).腾讯网.当乐网共同协办,由GMGC承办的2012移动游戏大会于12月20日-21日在成都举行. 本届大会为期2天,主要内容由"移动游戏产业高峰论坛"和"全球移动游戏开发者大会"两部分组成.大会将聚集全球移动游戏产业链上的相关公司.移