在cocos2d中使tilemap地图有无限循环的效果
2012-08-04 17:56
357 查看
首先我们要根据所需的地图制作两张tilemap地图,然后根据当前的position判断是目前是哪一张地图进行合理的显示。
附主要代码:
整个思想还是比较简单,就是根据目前的地图将第二章地图放到目前地图的后面紧跟,注意tilemap大小的计算:
附主要代码:
-(void) setViewPointCenter:(CGPoint)position { CGSize winSize = [[CCDirector sharedDirector] winSize]; if (-1*self.position.x>((_tilemap.mapSize.width * _tilemap.tileSize.width)+_tilemap.position.x-winSize.width-1.0)) { if ((-1*self.position.x>(_tilemap1.mapSize.width * _tilemap1.tileSize.width)+_tilemap1.position.x-winSize.width-1.0)) { _tilemap.position = ccp(_tilemap1.position.x+(_tilemap1.mapSize.width * _tilemap1.tileSize.width),0); } else { CGPoint mapPosition = [self tilePosFromLocation:_spiderman.position tileMap:_tilemap1]; int x = MAX(position.x, winSize.width / 2); int y = MAX(position.y, winSize.height / 2); x = MIN(x, (_tilemap1.mapSize.width * _tilemap1.tileSize.width)+_tilemap1.position.x - winSize.width / 2); y = MIN(y, (_tilemap1.mapSize.height * _tilemap1.tileSize.height) - winSize.height/2); CGPoint actualPosition = ccp(x, y); CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2); CGPoint viewPoint = ccpSub(centerOfView, actualPosition); self.position = viewPoint; } } else { CGPoint mapPosition = [self tilePosFromLocation:_spiderman.position tileMap:_tilemap]; int x = MAX(position.x, winSize.width / 2); int y = MAX(position.y, winSize.height / 2); x = MIN(x, (_tilemap.mapSize.width * _tilemap.tileSize.width)+_tilemap.position.x - winSize.width / 2); y = MIN(y, (_tilemap.mapSize.height * _tilemap.tileSize.height) - winSize.height/2); CGPoint actualPosition = ccp(x, y); CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2); CGPoint viewPoint = ccpSub(centerOfView, actualPosition); self.position = viewPoint; if((-1*self.position.x>(_tilemap.mapSize.width * _tilemap.tileSize.width)+_tilemap.position.x-winSize.width-1.0)) { _tilemap1.position = ccp(_tilemap.position.x+(_tilemap.mapSize.width * _tilemap.tileSize.width),0); } } }
整个思想还是比较简单,就是根据目前的地图将第二章地图放到目前地图的后面紧跟,注意tilemap大小的计算:
_tilemap1.mapSize.width * _tilemap1.tileSize.width
相关文章推荐
- 【cocos2d-x】瓷砖地图(TileMap)基础知识
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植9:Map Loop【地图循环加载】
- Cocos2d-X游戏开发之CCTMXTileMap(瓦片地图)
- 【cocos2d-x】瓷砖地图(TileMap)基础知识
- cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- 基于Cocos2d-x的实现tilemap地图双指缩放,单指拖动
- cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- Cocos2D实现RPG游戏人物地图行走的跟随效果
- cocos2d-x TiledMap获取tiled属性:tiledID、旋转以及翻转信息
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(一)
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(七)
- 原生js实现无限循环轮播图效果
- [Windwos Phone] 实作地图缩放 MapAnimationKind 属性效果
- 【Cocos2d-X开发学习笔记】第25期:游戏背景之瓦片地图集类(CCTMXTiledMap)的使用
- 再议瓦片地图(TileMap) -- 公众地图服务框架模式 (转)
- Cocos2d-X 背景层循环运动效果的具体实现
- ViewPager实现无限循环切换和手势滑动效果
- Android实现带指示点的自动轮播无限循环效果
- ViewPager实现左右无限循环效果