我正在使用以下代码让相机在屏幕下方跟随我的角色:
[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在纵向模式下创建我的世界。
非常感谢任何帮助!
答案 0 :(得分:1)
CCFollow跟随世界边界内的节点,减去屏幕宽度/高度的一半。如果你的精灵开始在y = 320下降,那么CCFollow将跟随它直到y = 160。
您可以将精灵定位到世界边界的顶部(y = 3000)或使世界边界为负(y = -3000)。无论哪种方式,当精灵到达世界边界时,滚动将在世界边界之前停止半个屏幕宽度/高度。