在SpriteKit中永远滚动地面

时间:2014-11-05 02:09:22

标签: ios iphone ios7 sprite-kit jstilemap

我正在构建一个永远滚动的游戏。 地面有一些洞,当玩家掉进洞里时游戏结束。 我可以滚动背景。 但我无法滚动" Ground"拥有PhysicsBody(玩家可以站立)。

我试过两种方式,就像这样。

1)使用JSTilemap滚动TileMap 它让游戏运行得如此缓慢,而且它不会永远滚动。

2)从地面图像文件滚动SpritNode。 有一个错误" PhysicsBody:无法创建物理主体"当我使用[SKPhysicsBody bodyWithTexture]时。

哪种方式更好?  并且,还有其他方式吗?

谢谢,

2 个答案:

答案 0 :(得分:0)

使用简单的SKNode类扩展它我添加所有的洞和平台,例如SKNodebase addChild:hole和SKNodebase addChild:platform给每个洞和平台一个名称,例如hole.name =“h1”现在里面 - (void)update:(CFTimeInterval)currentTime

[记住你的SKScene函数会更新 - (void)update:(CFTimeInterval)currentTime函数,你必须在SKNodebase类中编写]

 [[self children] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        SKNode *node = (SKNode *)obj;
        if ([node.name  isEqual: @“hole”]) {
            CGPoint position;
            //node.position get position of node on each update
        }
        if([node.name  isEqual: @“platform”])
        {
            CGPoint position;
           //node.position get position of node on each update

        }
    }];

答案 1 :(得分:0)

你可能想试试这个:

update():
ground0.position.x -= closeSpeed
ground1.position.x -= closeSpeed

if ground0.position.x <= -ground0.size.width{
   ground0.position.x = ground0.size.width - closeSpeed
}if ground1.position.x <= -ground1.size.width{
   ground1.position.x = ground1.size.width - closeSpeed
}

我的代码适用于我的游戏,地面上没有洞。 Yu可以创建几个地面部分并随机滚动

编辑: 这对于滚动背景也非常有用。

ParallaxBackground