Spritekit:如何使游戏屏幕视图向上移动,因为节点"跳跃"沿y轴?

时间:2014-05-14 10:52:19

标签: ios objective-c sprite-kit

有人可以发一个示例代码,说明如何让我的游戏画面向上移动,因为我的玩家节点"跳跃"沿y轴。涂鸦跳?此刻它显然只是直接从屏幕顶部跳出来。

任何帮助我制作我的平台"节点从父节点中移除,然后当它们从视图的底部出来时重新进行,因为我向上移动屏幕也有帮助。

还有最后一件事,我如何在初始视图中添加多个节点。 [self add child:node]只生一个。

我知道这些可能是业余问题,因为我是业余爱好者。

3 个答案:

答案 0 :(得分:5)

你提出了一个非常广泛的问题,我建议你看一下raywenderlich教程:How to make a game like Mega Jump让你入门,并在遇到问题时提出更具体的问题。

答案 1 :(得分:2)

解决方案是将重点放在播放器节点上。

例如,您的背景节点名为_worldNode,您的播放器节点名为_player。然后,将所有场景添加到_worldNode,其中还包括您的播放器。

当你的玩家四处走动时,你可以使用这段代码让他保持在中心焦点:

- (void)didSimulatePhysics
{
    // keep the center of the screen on the player
    _worldNode.position = CGPointMake(-(_player.position.x-(self.size.width/2)), -(_player.position.y-(self.size.height/2)));
}

我将代码放入didSimulatePhysics,因为如果他被物理引擎移动,它可以确保您的玩家的新位置。

答案 2 :(得分:1)

Pieter的答案可能是最有帮助的,但我会尝试回答你提出的第二个和第三个问题,因为sangony涵盖了第一个问题。

要删除已脱离屏幕的平台,请在实例化平台节点时使用node.name = @"platform";,然后在更新方法中检查它们相对于worldNode的当前位置,如下所示:

-(void)update:(NSTimeInterval)currentTime
{
    [self enumerateChildNodesWithName:@"platform" usingBlock:^(SKNode *node, BOOL *stop) {
        if(node.position.y < _worldNode.position.y-(self.size.height/2))
            [node removeFromParent];
    }];
}

要向场景添加多个节点,您必须在多个节点上多次使用[self addChild:node];,手动实例化每个节点,或者迭代设置它们。如果您希望平台具有相当统一的模式,那么for循环可能是完成此操作的正确方法。你也可以用更少的总节点来完成这项工作,方法是将从屏幕底部掉落的节点移到屏幕顶部,而不是完全移除它们。