1

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

[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 在纵向模式下创建的。

任何帮助将不胜感激!

4

1 回答 1

1

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

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

于 2013-01-30T15:44:27.377 回答