Cocos2D项目与tileMap。返回的位置无效

时间:2014-04-29 15:01:05

标签: objective-c cocos2d-iphone path-finding tmx

我有一个项目,我正在尝试实现一个路径查找类,但我偶然发现了一个我似乎无法修复的问题。

发生错误的视频可在此处找到: https://www.dropbox.com/s/25ajb0mc5p4a3a9/Tilemap%20Error.mov

抛出的错误消息是:Assertion failure in -[CCTMXLayer tileGIDAt:withFlags:], /Users/Dave/Desktop/AI_DISS_new copy/AI_DISS/libs/cocos2d/CCTMXLayer.m:304

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'TMXLayer: invalid position'.

当地图和图层大小以平铺值返回时,该点返回为像素值,因此我尝试将包含像素值的变量除以平铺的宽度或高度,但似乎没有任何效果。

tileAt的GID:当使用像素值(可以理解)时,点返回太高,当转换为平铺值时,搜索很长时间,最终离开地图并不断搜索直到Xcode崩溃。

如果这不是最适合这个论坛的问题,我尽可能详细地解释道歉。我真的很感激任何帮助。

如果您需要更多详细信息,请询问。

使用该类的原始说明是在cocos2d论坛上进行了大修,线程似乎已被移动或删除,因此我无法引用它们但我确定tilemap(TMX Tilemap)和图层属性已正确传递。

从我的HelloWorldLayer类中,值为:

    //Pathfinding related code
    ////////////////////////////
    _tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"NewMap.tmx"];
    _pathFinder = [[AStar alloc] initWithTileMap:_tileMap groundLayer:@"Collision"]; //collidable Tiles
    [_pathFinder setCollideKey:@"Collidable"]; // defaults to COLLIDE
    [_pathFinder setCollideValue:@"True"]; // defaults to 1

    _pathFinder2 = [[AStar alloc] initWithTileMap:_tileMap groundLayer:@"Collision"]; //collidable Tiles
    [_pathFinder2 setCollideKey:@"Collidable"]; // defaults to COLLIDE
    [_pathFinder2 setCollideValue:@"True"]; // defaults to 1

    /////////////////////////////

并将move方法称为:

/////////////// player path finding related code //////////////////
[_pathFinder moveSprite:_player from:s to:f atSpeed:0.003];
///////////// end player path finding related code //////////////

提前致谢。

GID代码如下所述:

    if (tileGid)
    {
        // check the tile for the collide property.
        NSDictionary *dict = [tileMap propertiesForGID:tileGid];
        if (dict)
        {
            //check the tile for the collideKey and return Yes if a match
            NSString *collide = [dict valueForKey:collideKey];
            if (collide && [collide compare:collideValue] == NSOrderedSame)
                return YES;
        }
    }

0 个答案:

没有答案