所以,在这个游戏中,我让玩家可以使用加速计左右移动,并通过点击屏幕跳跃。现在,玩家必须躲避天空中的敌人,并通过跳跃倒下的敌人来爬上来。玩家应该能够无限上升直到死亡,因此需要一个摄像机来跟踪玩家的上升过程。我读过其他一些 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)));
}
然后还有很多其他方法可以将其他东西添加到游戏中,包括敌人、碰撞处理等。
好的,所以当我这样做时,玩家的移动突然停止工作,玩家的生成位置发生了变化,其余的 Sprite (不是世界的子节点)继续前进。
为什么这不起作用,我该如何解决它,它是如何工作的?
最佳答案
为了让相机跟随你的玩家添加这些简单的代码行:
int cameraEdge = 100;
if (self.player.position.y > cameraEdge) {
worldPosition.y = cameraEdge - self.player.position.y;
}
self.world.position = worldPosition;
它的作用:只要你的玩家的 y 位置高于 100(或你设置的任何值),世界的位置就会开始跟随玩家。我已经测试过了,效果很好
关于ios - 为什么我的相机(跟随玩家)不工作(SpriteKit)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27332095/