【问题标题】:Can I make CCFollow follow more naturally?我可以让 CCFollow 更自然地关注吗?
【发布时间】:2012-03-20 12:42:59
【问题描述】:

我想用 cocos2d/Box2D 构建一个平台游戏。我使用 CCFollow 跟随玩家精灵,但 CCFollow 不断地将它放在屏幕的中心。我希望 CCFollow 更自然地跟随,就像人类以可接受的滞后、小过冲等转动摄像机一样。

这是我的一种方法,但没有奏效:我(通过一个距离关节)将一个小的物理体连接到玩家身上,它不会与任何东西发生碰撞,由一个透明的精灵表示。我CCFollow'ed透明精灵。我希望这个幽灵的身体会像气球一样附着在玩家身上,从而平滑地转移视线。问题是距离关节因太重 - 太轻的物体而断裂。气球随机移动,当然,不管它有多轻,它都会将玩家拉回来一点。

有什么更好的方法可以平滑地跟随移动的精灵?

【问题讨论】:

    标签: cocos2d-iphone box2d


    【解决方案1】:

    尝试将此添加到 cocos2d 库中的 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 论坛得到这个。

    【讨论】:

      【解决方案2】:

      也许这个http://www.cocos2d-iphone.org/wiki/doku.php/prog_guide:actions_ease 可以帮助您通过 CCFollow 获得“加速”效果。

      【讨论】:

      • 不幸的是,CCFollow 不是从 CCActionInterval 派生的。它一直运行直到停止,因此 CCFollow 无法缓解。但是我会尝试实现一个基于 CCActionInterval 的跟随者类,它会跟随一段时间。谢谢。
      猜你喜欢
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2014-09-25
      • 2017-06-14
      相关资源
      最近更新 更多