Xcode 如何为SpriteKit创建随机赛道?

Xcode 如何为SpriteKit创建随机赛道?,xcode,random,sprite-kit,Xcode,Random,Sprite Kit,我想创建一个随机生成的赛马场比赛 下面是我希望它是什么样子的草图: 我希望赛马场是一个物理实体。当赛道移动到屏幕左侧时,它会发生变化,它会在右侧屏幕上生成,但具有随机方向(曲线),如草图中所示。 如果赛车在某个点碰到道路边缘,比赛就结束了 我现在唯一需要帮助的是如何生成上面描述的道路。如果你把赛道变成一个物理实体,我想汽车也会变成一个物理实体,在物理实体中运动。这听起来有点违背了Spritekit的设计理念。你可以考虑让跑道边(上曲线和下曲线)边。然后让车在中间移动,如果它碰到你就应该发生碰撞

我想创建一个随机生成的赛马场比赛

下面是我希望它是什么样子的草图:

我希望赛马场是一个物理实体。当赛道移动到屏幕左侧时,它会发生变化,它会在右侧屏幕上生成,但具有随机方向(曲线),如草图中所示。 如果赛车在某个点碰到道路边缘,比赛就结束了


我现在唯一需要帮助的是如何生成上面描述的道路。

如果你把赛道变成一个物理实体,我想汽车也会变成一个物理实体,在物理实体中运动。这听起来有点违背了Spritekit的设计理念。你可以考虑让跑道边(上曲线和下曲线)边。然后让车在中间移动,如果它碰到你就应该发生碰撞。

我最近也做了类似的事情(做了一个沙丘游戏,比如在弯曲的地形上进行跳球游戏),这样你就可以在给定的范围内随机化一组y坐标,例如

    let yPointRandomizer = GKGaussianDistribution(lowestValue: -500, highestValue: -200)
    var highGroundPositions = [CGPoint(x: 0, y: yPointRandomizer.nextInt())]
    for i in 1...50 {
        highGroundPositions.append(CGPoint(x: (i * 400) + 200, y: yPointRandomizer.nextInt()))
    }
这给你的是曲线的坐标。然后,要绘制形状并获得边,请执行以下操作:

let splineShapeNode = SKShapeNode(splinePoints: &highGroundPositions,
                                      count: highGroundPositions.count)
splineShapeNode.physicsBody = SKPhysicsBody(edgeChainFrom: splineShapeNode.path!)

请注意,上面的代码在x=0时创建第一个,并向右移动,因此根据需要进行调整。希望这能帮助你开始

我必须将代码的这两部分放在哪个函数中@GORWell,第一部分是景观的y坐标,第二部分是节点及其物理体。这取决于你的项目结构。我的建议是先看看这里,尝试一些更简单的方法来学习框架。甚至像只是为他们创建球的形状和物理,跑步只是为了适应SpriteKit的工作方式。你知道如何将SKShapeNode移到左边吗?