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

How do you set up a camera in Sprite-Kit properly

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

所以这是

-(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)请不要犹豫要不要通知我

非常感谢

为了让相机跟随你的玩家添加这些简单的代码行:

int cameraEdge = 100;

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

}
self.world.position = worldPosition;

这是做什么的:只要你的玩家的 y 位置高于 100(或你设置的任何值),世界的位置就会开始跟随玩家。我已经测试过了,效果很好。