Cocos2d iphone 我能让CCFollow更自然一些吗?

Cocos2d iphone 我能让CCFollow更自然一些吗?,cocos2d-iphone,box2d,Cocos2d Iphone,Box2d,我想用cocos2d/Box2D构建一个平台游戏。我使用CCFollow跟踪玩家精灵,但CCFollow总是将其放在屏幕中央。我想让CCFollow更自然地跟随,就像一个人转动摄像机时有一个可接受的滞后,一个小的超调…等等 这是我的一个不起作用的方法:我(通过一个距离关节)将一个小的物理体连接到播放器上,它不会与任何物体发生碰撞,由一个透明的精灵表示。我跟着透明的精灵。我希望这个幽灵的身体会像一个气球一样附在玩家身上,因此视野会平稳地转变。问题是距离关节断裂与太重-太轻的对象。气球是随机移动的,

我想用cocos2d/Box2D构建一个平台游戏。我使用CCFollow跟踪玩家精灵,但CCFollow总是将其放在屏幕中央。我想让CCFollow更自然地跟随,就像一个人转动摄像机时有一个可接受的滞后,一个小的超调…等等

这是我的一个不起作用的方法:我(通过一个距离关节)将一个小的物理体连接到播放器上,它不会与任何物体发生碰撞,由一个透明的精灵表示。我跟着透明的精灵。我希望这个幽灵的身体会像一个气球一样附在玩家身上,因此视野会平稳地转变。问题是距离关节断裂与太重-太轻的对象。气球是随机移动的,当然,不管它有多轻,它都会把玩家往后拉一点


有什么更好的方法可以顺利跟踪移动的精灵

也许这可以帮助您获得CCFollow的“加速”效果。

尝试将其添加到cocos2d libs中的CCActions中

-(void) step:(ccTime) dt
{
#define CLAMP(x,y,z) MIN(MAX(x,y),z)

    CGPoint pos;
    if(boundarySet)
    {
        // whole map fits inside a single screen, no need to modify the position - unless map boundaries are increased
        if(boundaryFullyCovered) return;

        CGPoint tempPos = ccpSub(halfScreenSize, followedNode_.position);
        pos = ccp(CLAMP(tempPos.x,leftBoundary,rightBoundary), CLAMP(tempPos.y,bottomBoundary,topBoundary));
    }
    else {
        // pos = ccpSub( halfScreenSize, followedNode_.position );
        CCNode *n = (CCNode*)target_;
        float s = n.scale;
        pos = ccpSub( halfScreenSize, followedNode_.position );
        pos.x *= s;
        pos.y *= s;
    }

    CGPoint moveVect;

    CGPoint oldPos = [target_ position];
    double dist = ccpDistance(pos, oldPos);
    if (dist > 1){
        moveVect = ccpMult(ccpSub(pos,oldPos),0.05); //0.05 is the smooth constant.
        oldPos = ccpAdd(oldPos, moveVect);
        [target_ setPosition:oldPos];
    }

#undef CLAMP

}

我是从cocos2d论坛上得到的。

不幸的是,CCFollow不是从CCActionInterval派生的。它一直运行到停止,所以不能放松。但我将尝试实现一个基于CCActionInterval的跟随者类,该类将跟随一段时间。谢谢