碰撞检测不适用于cocos2d游戏中的ipad视网膜显示(TileMap)

时间:2013-07-02 04:06:17

标签: cocos2d-iphone retina-display

在我的瓷砖地图中,碰撞检测不适用于视网膜显着而且玩家位置也发生了变化,在视网膜中显示玩家位置在屏幕外

与我的项目相关的一些编码部分

- (CGPoint)tileCoordForPosition:(CGPoint)position
{    

    int x = position.x / _tileMap.tileSize.width;
    int y = ((_tileMap.mapSize.height * _tileMap.tileSize.height) - position.y) / _tileMap.tileSize.height;
    return ccp(x, y);
}

- (CGPoint)positionForTileCoord:(CGPoint)tileCoord
{

    int x = (tileCoord.x * _tileMap.tileSize.width) + _tileMap.tileSize.width/2;
    int y = (_tileMap.mapSize.height * _tileMap.tileSize.height) - (tileCoord.y * _tileMap.tileSize.height) - _tileMap.tileSize.height/2;
    return ccp(x, y);

}

使用CC_CONTENT_SCALE_FACTOR()

之后
- (CGPoint)tileCoordForPosition:(CGPoint)position
{    

    int x = position.x / (_tileMap.tileSize.width/ CC_CONTENT_SCALE_FACTOR());
    int y = (((_tileMap.mapSize.height/ CC_CONTENT_SCALE_FACTOR()) * (_tileMap.tileSize.height/ CC_CONTENT_SCALE_FACTOR())) - position.y) / (_tileMap.tileSize.height/ CC_CONTENT_SCALE_FACTOR());
    return ccp(x, y);
}

- (CGPoint)positionForTileCoord:(CGPoint)tileCoord
{

    int x = (tileCoord.x *(_tileMap.tileSize.width/ CC_CONTENT_SCALE_FACTOR())) + (_tileMap.tileSize.width/ CC_CONTENT_SCALE_FACTOR())/2;
    int y = ((_tileMap.mapSize.height/ CC_CONTENT_SCALE_FACTOR()) * (_tileMap.tileSize.height/ CC_CONTENT_SCALE_FACTOR())) - (tileCoord.y * (_tileMap.tileSize.height/ CC_CONTENT_SCALE_FACTOR())) - (_tileMap.tileSize.height/ CC_CONTENT_SCALE_FACTOR())/2;
    return ccp(x, y);

}

0 个答案:

没有答案