所以,在这个游戏中,我让玩家可以使用加速度计左右移动并通过点击屏幕跳跃。现在,玩家必须躲避天空中的敌人,并通过跳跃堕落的敌人爬上去。玩家应该能够无限地上升直到他去世,因此需要一个摄像头跟随玩家的旅程。我已经阅读了其他一些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)));
}
然后还有很多其他方法在游戏中添加其他东西,包括敌人,碰撞等等。
好吧,所以当我这样做时,玩家的动作突然停止了,玩家产生的位置发生了变化,其余的精灵,不是世界的儿童节点,只是继续前进。
为什么这不起作用,我该如何修复它,它是如何工作的?
答案 0 :(得分:1)
为了让相机跟随你的播放器添加这些简单的代码行:
int cameraEdge = 100;
if (self.player.position.y > cameraEdge) {
worldPosition.y = cameraEdge - self.player.position.y;
}
self.world.position = worldPosition;
这是做什么的:每当你的玩家的y位置高于100(或者你设置的任何位置)时,世界的位置就开始跟随玩家。我已经对它进行了测试,效果很好