您的位置:首页 > 移动开发 > Cocos引擎

在cocos2d中使tilemap地图有无限循环的效果

2012-08-04 17:56 357 查看
首先我们要根据所需的地图制作两张tilemap地图,然后根据当前的position判断是目前是哪一张地图进行合理的显示。

附主要代码:

-(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: