【问题标题】:Cocos2D Make Camera Follow Sprite Not Working ProperlyCocos2D 使相机跟随 Sprite 无法正常工作
【发布时间】:2013-01-30 04:55:23
【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 好的,谢谢您的信息!不幸的是,将 CGRectMake(0,0,320,-3000)CGRectMake(0,3000,320,-3000) 放入 worldBoundary: 并不能解决我的问题 - 你的意思是这样吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多