`
7090
  • 浏览: 279475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CCTMXTiledMap使用的几个事项

 
阅读更多
项目中的地图层采用cocos2d-x中的CCTMXTiledMap,我们的整个tile层采用的是一个大整图,然后对里面的tile进行分格子,而且这些tile只有在一个整图上才能使用ccbatchnode 。

CCTMXTiledMap默认是不抗锯齿的,就是采用的是setAliasTexParameters,这一点可以在CCTMXLayer的setupTiles方法里进行设置的

m_pobTextureAtlas->getTexture()->setAliasTexParameters();


使用默认的设置,会有个问题,就是当对地图进行缩放以后,再对map进行移动,这时有些map的tile块会闪动,在android的机器上特别明显,没有办法就改用了抗锯齿操作,没有修改CCTMXLayer的默认行为,是在外部修改的

	if(map -> getChildren() != NULL && map -> getChildren() ->count() > 0)
	{
		CCObject* child;
		CCARRAY_FOREACH(map -> getChildren(), child)
		{
			CCSpriteBatchNode* pNode = (CCSpriteBatchNode*) child;
			if (pNode != NULL)
			{
				pNode->getTexture()->setAntiAliasTexParameters();
			}

		}
	}

抗锯齿操作默认是没有问题的,,但是由于我们的地图块周围并没有预留额外的1-2个像素,用于抗锯齿操作时的保留像素,所以地图移动过程中,在某些地图块的边界上就会看到其在整图位置上周围像素的一些痕迹,造成一条条的白线,或者黑线,网上看到了好几个方案,最后发现在ccconfig.h中修改一个变量就可以解决这个问题
#ifndef CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL
#define CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL 1
#endif

CC_FIX_ARTIFACTS_BY_STRECHING_TEXEL默认为0,设置为1就解决了上面说的问题,该方法应该是对抗锯齿操作的范围做了一个约束,以避免周围像素的干扰。

另外有点让人很意外的是在android机器上,CCTMXTiledMap默认是不抗锯齿的,但是当我按了home键或者其他键,让程序进入后台,然后再返回前台的时候,从效果上来看,CCTMXTiledMap变成抗锯齿了,真心不知道这是怎么回事。。。


还有就是要记得设置为2d投影,
CCDirector *pDirector = CCDirector::sharedDirector();
 
pDirector->setProjection(kCCDirectorProjection2D);  


之前遇到过没有使用CCTMXTiledMap,自己实现的瓦片地图的情况,地图分了好几层,一开始图块之间都有白线,后来改成2d投影之后,前面的层的白线消失了,但是后面的层还有。后来发现这个游戏前后层的横向移动速度是不同的,就是比如最上层移动5个像素时,后层可能只移动了2个像素。后来想到之前看过的一个说法说是设置位置的时候,一定要设置为int型,因为即使你设置为浮点型,但是由于像素是整个的,并没有几点几个像素这么一个概念,所以默认设置为的float型就有可能出现白线,果然当在最后设置位置的时候,将float强转为int,那后层的白线也就消失了。。


分享到:
评论

相关推荐

    cocos2d-x tiledMap CCTMXTiledMap的使用

    资源文件:http://pan.baidu.com/s/1qWAqI5m test.tmx文件内容: <?xml version="1.0" encoding=

    寻路cocos2d

    3.增加了CCTMXTiledMap的一个类别,实现了用一张tileMap适用低分辨率和高分辨率的贴图集,编程时只要按照普通分辨率来就可以了,而不用考虑是否是retina等情况(tileMap的对象层也同样适用), 可以适用于其他项目,...

    详解iOS游戏开发中Cocos2D的坐标位置关系

    在示例代码中,使用`CCTMXTiledMap`类加载了一个名为“PositionText.tmx”的TMX格式地图文件。`tiledMapWithTMXFile:`方法是加载TMX地图的标准方式,它会创建一个表示整个地图的CCTMXTiledMap对象。地图由多个格子...

    【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

    在这个系列的开发笔记中,我们将深入探讨如何使用Cocos2d-x与Tiled Map Editor结合,创建和管理游戏地图。Tiled Map Editor是一款强大的2D地图编辑器,支持多种格式的图层和对象,为游戏设计师提供了灵活的布局设计...

    TMX地图编辑器(tIDE Tile Map Editor) v2.07.rar

    右边的绘图工具栏上有一个很好使用的按钮区域绘制,它能把选择区域填充出当前选择的tile,下面就先在tile Picker选择一块浅色的草地区域绘制到整个地图。然后画上我们的路。 Save as为 tmx类型的文件 中间如果出现...

    tiled0.7.2

    Tiled 0.7.2与Cocos2d的集成主要涉及以下几个步骤: 1. 创建地图:在Tiled中设计并保存地图文件,确保使用Cocos2d支持的TMX或JSON格式。 2. 导入地图:在Cocos2d项目中,通过加载函数(如`-[CCTMXTiledMap tmxFile:...

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

    10. **Tiled地图**:如果教程涵盖地图编辑器Tiled,会讲解如何导入TMX地图文件,使用`CCTMXTiledMap`类。 11. **游戏保存与加载**:学习如何使用NSUserDefaults或自定义序列化方法保存游戏进度。 12. **性能优化**...

    xiyoo0812-lualog-master_java_

    - 导入TMX文件:在Cocos2dx项目中,我们导入TMX文件,并使用` CCTMXTiledMap `类实例化地图对象。通过读取TMX文件,Cocos2dx会自动解析地图数据。 2. **加载瓦片图集** - 瓦片图集(Tileset)是瓦片地图的基础,...

    iphone cocos2d 游戏开发 中文翻译版pdf(7-13)

    同时,可能会介绍Tiled地图(CCTMXTiledMap)的使用,这对于创建复杂的关卡和环境非常有用。 章节9通常会涉及物理引擎的集成,比如Box2D,它是Cocos2d的一个常见扩展。开发者会学习如何设置物理世界,创建刚体和...

    用cocos2d-x实现的一个简单的打砖块游戏

    在这个项目中,虽然没有使用物理引擎,但通过自定义的碰撞检测和运动逻辑,同样可以实现游戏的核心功能。 1. **资源管理**: `Resources` 文件夹包含了游戏所需的图片、音频和XML地图文件。Cocos2d-x提供了一套...

    TileMap源码和资源

    在游戏开发领域,Cocos2d-x是一个广泛使用的2D游戏引擎,它提供了丰富的功能和高效的性能。本资源包主要聚焦于Cocos2d-x 3.0版本中的TileMap(瓦片地图)部分,这一部分是构建复杂2D游戏场景的关键工具。本文将深入...

    cocos2d-x源码素材

    这个资源包涵盖了多个重要的游戏开发技术,包括碰撞检测、瓦片地图(Tile Map)的使用以及动画制作等关键环节。接下来,我们将深入探讨这些知识点。 首先,cocos2d-x是一个跨平台的2D游戏开发框架,基于C++编写,...

    Cocos2D-X2.2.3学习笔记19(地图系统)

    在Cocos2D-X中,我们使用` CCTMXTiledMap `类来加载和显示这些地图。这个类提供了读取和解析TMX文件的能力,包括图块集(Tileset)、图层(Layers)、对象组(Object Groups)等信息。 首先,我们需要了解如何创建...

    cocos2d-x 地图编辑器

    在游戏开发领域,cocos2d-x是一个广泛使用的开源2D游戏引擎,它支持多种平台,包括iOS、Android、Windows等。地图编辑器是cocos2d-x游戏开发中的一个重要工具,它使得开发者能够方便地创建、编辑和管理游戏中的地图...

    知易 Cocos2D-iPhone 游戏开发教程 005

    这通常涉及使用特定的引擎组件,例如Cocos2D-iPhone中的`CCTMXTiledMap`类。 **一些限制** 虽然瓦片化的方法有很多优点,但也存在一定的局限性。例如,在瓦片大小固定的情况下,难以实现非常精细的地形细节。 **...

    COCOS2D 弹球效果

    Cocos2D是一个广泛使用的开源2D游戏开发框架,尤其在iOS和Android平台上受到开发者们的喜爱。它的强大功能和易用性使得开发各种类型的游戏变得简单,包括我们今天要讨论的主题——“弹球效果”。在Cocos2D中创建弹球...

    Cocos2d-x 场景编辑器

    值得注意的是,对于`CCSprite`、`CCParticleSystemQuad`、`CCArmature`、`CCTmxTiledMap`、`CocoGUI`这类组件,初次获取的实际上是`CCComRender`组件,需进一步调用`getRender`方法获取实际的对象实例。 #### 四、...

    Cocos2D-X游戏开发技术精解

    6.6.1 砖块地图类CCTMXTiledMap 179 6.6.2 地图图层类CCTMXLayer 181 6.6.3 地图物体层CCTMXObjectGroup 183 6.7 示例项目 184 6.8 背景的滚动与角色移动 186 6.9 多层背景滚动效果 188 6.10 本章小结 190 第...

Global site tag (gtag.js) - Google Analytics