为什么我的相机(跟随播放器)不工作(SpriteKit)?

时间:2014-12-06 13:15:57

标签: ios objective-c sprite-kit

所以,在这个游戏中,我让玩家可以使用加速度计左右移动并通过点击屏幕跳跃。现在,玩家必须躲避天空中的敌人,并通过跳跃堕落的敌人爬上去。玩家应该能够无限地上升直到他去世,因此需要一个摄像头跟随玩家的旅程。我已经阅读了其他一些Stack Overflow帖子,并查阅了Apple的编程指南,但我无法弄清楚。这就是我添加的内容:

-(void) createSceneContents
{
    self.world = [SKNode node];
    self.playerSize = self.frame.size.width/7;
    self.player = [self.playerData newPlayer:self.playerSize];
    self.player.name = @"player";
    self.player.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(self.playerSize-5,self.playerSize-5)];
    self.player.physicsBody.allowsRotation = NO;
    self.player.physicsBody.categoryBitMask = self.playerCategory;
    self.player.physicsBody.contactTestBitMask = self.enemyCategory | self.edgeCategory;
    self.isTouchingGround = NO;
    self.player.position = CGPointMake(CGRectGetMidX(self.frame), 100);
    [self.playerData movementSetup];
    [self addChild:self.world];
    [self.world addChild:self.player];
}

此方法还有更多内容,但这些对于这个问题并不重要。

-(void) didSimulatePhysics
{
        self.world.position = CGPointMake(-(self.player.position.x-(self.size.width/2)), -(self.player.position.y-(self.size.height/2)));
}

然后还有很多其他方法在游戏中添加其他东西,包括敌人,碰撞等等。

好吧,所以当我这样做时,玩家的动作突然停止了,玩家产生的位置发生了变化,其余的精灵,不是世界的儿童节点,只是继续前进。

为什么这不起作用,我该如何修复它,它是如何工作的?

1 个答案:

答案 0 :(得分:1)

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

    int cameraEdge = 100;

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

    }
    self.world.position = worldPosition;

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