如何正确设置Sprite-Kit中的相机

时间:2015-01-10 14:53:42

标签: ios objective-c sprite-kit

好的,所以我想在我的游戏中实现一个相机,在另一篇文章中,我看到了如何做到这一点。 (基本上我想要实现的是每当我的玩家达到一定高度时相机会向上移动)

所以这是

-(void)didSimulatePhysics {

SKSpriteNode *hero = self.player;

int cameraEdge = self.player.size.height * 3;
if(hero && self.isPaused == NO)
{
    CGPoint heroPosition = hero.position;
    CGPoint worldPosition;

    worldPosition.x = 0;

    CGFloat yCoordinate = worldPosition.y + heroPosition.y;


    if ( yCoordinate < cameraEdge && heroPosition.y > -200){
        NSLog(@"Waddap bud");
        worldPosition.y = worldPosition.y  - yCoordinate + cameraEdge;
        self.worldMovedForUpdate = YES;

    }else {

        worldPosition.y = self.frame.size.height/2;
    }

    if(yCoordinate > (self.frame.size.height - cameraEdge) && heroPosition.y < 2000)
    {
        worldPosition.y = worldPosition.y + (self.frame.size.height - yCoordinate) - cameraEdge;
        self.worldMovedForUpdate = YES;

    }
    self.world.position = worldPosition;

}
}

由于我自己没有想到这些代码,所以我不能完全理解发生了什么,但确实有效。只是不是我想要它的方式。当玩家达到某个y级别时,相机突然开始跟随玩家并且当玩家跳跃很多时会发生相机移动和没有相机移动之间切换的点,这会导致非常小的相机移动。我觉得这有点令人困惑,但我无法想出更好的解释方法。

有人可以尝试详细解释这段代码(我可以阅读代码,我只是没有得到它)​​,如果有人有解决方案(鉴于你理解问题; P)请不要&#39 ;不要犹豫告诉我

非常感谢

1 个答案:

答案 0 :(得分:0)

为了让相机跟随你的播放器添加这些简单的代码行:

int cameraEdge = 100;

if (self.player.position.y > cameraEdge) {
worldPosition.y = cameraEdge - self.player.position.y;

}
self.world.position = worldPosition;

这是做什么的:每当你的玩家的y位置高于100(或者你设置的任何位置)时,世界的位置就开始跟随玩家。我已经对它进行了测试,效果很好。