Cocos2D使相机跟随精灵不能正常工作

时间:2013-01-30 04:55:23

标签: cocos2d-iphone camera objective-c++ levelhelper

我正在使用以下代码让相机在屏幕下方跟随我的角色:

[self runAction:[CCFollow actionWithTarget:charSprite worldBoundary:[levelLoader gameWorldSize]/*CGRectMake(0,0,320,3000)*/]];

这会发生什么:代码按照您的预期运行,并在角色从屏幕顶部落下时跟随角色。然而:当他到达屏幕中间时,相机停止跟随他。

我已尝试过上述代码以及将[levelLoader gameWorldSize]替换为注释掉的CGRectMake(0,0,320,3000) - 两者都会产生相同的结果。作为最后的手段,我尝试使用我在www.raywenderlich.com上找到的一些代码,这些代码之前对我有用(见下文)(它在我编写的另一个游戏中的x轴上运行),但同样的问题也出现了。

-(void)setViewpointCenter:(CGPoint) position
{
 CGSize winSize = [[CCDirector sharedDirector] winSize];
 CGRect worldRect = [levelLoader gameWorldSize];

 int x = MAX(position.x, worldRect.origin.x + winSize.width / 2);
 int y = MAX(position.y, worldRect.origin.y + winSize.height / 2);
 x = MIN(x, (worldRect.origin.x + worldRect.size.width) - winSize.width / 2);
 y = MIN(y, (worldRect.origin.y + worldRect.size.height) - winSize.height/2);
 CGPoint actualPosition = ccp(x, y);

 CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2);
 CGPoint viewPoint = ccpSub(centerOfView, actualPosition);

 self.position = viewPoint;
}

使用LevelHelper在纵向模式下创建我的世界。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

CCFollow跟随世界边界内的节点,减去屏幕宽度/高度的一半。如果你的精灵开始在y = 320下降,那么CCFollow将跟随它直到y = 160。

您可以将精灵定位到世界边界的顶部(y = 3000)或使世界边界为负(y = -3000)。无论哪种方式,当精灵到达世界边界时,滚动将在世界边界之前停止半个屏幕宽度/高度。