0

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

我尝试了两种方法,就像这样。

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

2) 从地面图像文件滚动 SpritNode。当我使用 [SKPhysicsBody bodyWithTexture] 时出现错误“PhysicsBody:无法创建物理体”。

哪种方式更好?并且,没有别的办法了吗?

谢谢,

4

2 回答 2

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 可以创建多个地面部分并随机滚动它们

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

视差背景

于 2014-11-06T07:47:29.200 回答
0

使用简单的 SKNode 类扩展它我添加所有孔和平台,例如 SKNodebase addChild:hole 和 SKNodebase addChild:platform 给每个孔和平台一个名称,例如 hole.name="h1" 现在在 -(void)update:(CFTimeInterval)当前时间

[请记住,您的 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

        }
    }];
于 2014-11-05T10:47:20.077 回答