使用SpriteKit滚动游戏场景

Cab*_*bus 3 ios sprite-kit

简而言之:如何制作不是无限滚动的gameScene?

我将通过一个示例来说明我要实现的目标:爬坡比赛

在这个游戏中,您在山上驾驶汽车(实际上是任何疯狂的汽车;)。
现在,关于游戏的一件特别的事情我无法理解:

很明显,每个阶段的轨迹都不是随机布置的。即,每次播放时,曲目的路线总是相同的。

我想学的是:

  • 您如何创建这样的滚动游戏场景?它是滚动的巨大背景节点,还是涉及某种花式拼贴?

我的游戏需要滚动两个轴(x,y)。玩家节点始于游戏区域的中心,并且可以四处移动。该区域周围散布着一些障碍,其中有些障碍最初并不可见,因为它们位于“游戏世界”的边缘。



我想最简单的解决方案是使用一个大的后台节点,但是这将如何影响游戏的内存消耗?

谢谢你的帮助!

Sky*_*ren 5

我们在SKATiledMap中构建了类似的内容。技巧是将要跟随的对象添加到要滚动的背景。这还将使背景保持在屏幕上。

-(void)update
{
    if (self.autoFollowNode)
    {
        self.position = CGPointMake(-self.autoFollowNode.position.x+self.scene.size.width/2, -self.autoFollowNode.position.y+self.scene.size.height/2);

        //keep map from going off screen
        CGPoint position = self.position;

        if (position.x > 0)
            position.x = 0;


        if (position.y > 0)
            position.y = 0;

        //self.mapHeight*self.tileWidth gives you the size of the map in points
        if (position.y < -self.mapHeight*self.tileWidth+self.scene.size.height)
            position.y = -self.mapHeight*self.tileWidth+self.scene.size.height;
        if (position.x < -self.mapWidth*self.tileWidth+self.scene.size.width)
            position.x = -self.mapWidth*self.tileWidth+self.scene.size.width;

        self.position = CGPointMake((int)(position.x), (int)(position.y));
    }
}
Run Code Online (Sandbox Code Playgroud)

self在这种情况下,背景autoFollowNode是玩家。您可以使用self.size.widthself.mapHeight*self.tileWidth希望” 代替他的“ 希望”,并且对他有所帮助。