我迫切需要你的帮助。所以我是SpriteKit for XCODE的新手,我只是习惯了这些机制。我目前有一个背景图像和一个位于中心的精灵。
问题
精灵在屏幕上水平移动,这就是我想要的。然而,精灵移出屏幕,我想要的是精灵和背景之间的连续运动。例如,下面视频链接中的这个游戏显示了我想要的那种关系。 https://www.youtube.com/watch?v=9RYgMqkRgoE
SKSpriteNode *mega =[ SKSpriteNode spriteNodeWithImageNamed:@"Mega.png"];
mega.position = CGPointMake (self. frame.size.width/2, self.frame.size.height/2);
mega.size = CGSizeMake(30,30);
mega.zPosition = 3;
mega.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:mega.frame.size];
mega.physicsBody.usesPreciseCollisionDetection = YES;
mega.physicsBody.mass = 0.2;
mega.physicsBody.affectedByGravity = NO;
mega.physicsBody.dynamic = NO;
SKAction *moveNodeUp = [SKAction moveByX:500 y:0.0 duration:10];
[mega runAction: moveNodeUp];
[self addChild:mega];
SKAction *repeater = [SKAction repeatActionForever:moveNodeUp];
[mega runAction:repeater];
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"bg.png"];
bg.position = CGPointMake(160, 284);
bg.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
SKAction *moveNodeForward = [SKAction moveByX:500 y:0.0 duration:10];
bg runAction: moveNodeForward];
[self addChild:bg];
答案 0 :(得分:1)
移动背景,而不是精灵。
如果仔细观察该视频,您会注意到角色永远不会离屏幕中心太远。背景的运动(以及角色上的动画)产生了一种运动的幻觉。
如果删除这些行:
SKAction *moveNodeUp = [SKAction moveByX:500 y:0.0 duration:10];
[mega runAction: moveNodeUp];
移动背景时,播放器似乎会向左移动。
如果您想制作类似于视频中的游戏,我建议您查看this one等问题