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