SpriteKit驱动技术

时间:2019-04-20 08:21:09

标签: ios swift sprite-kit game-engine game-physics

我是一位iOS开发人员,想要在SpriteKit中制作游戏。我有零游戏开发经验:)

这将是一个2D游戏,其中汽车在屏幕的水平轴上从A行驶到B。会有颠簸和其他障碍。我想应用很多物理,爆炸等方法。汽车会受到它们的撞击,减速,翻倒等。此外,汽车可能会失去方向盘。

我的问题听起来很琐碎:如何使汽车“行驶”。

以这样一种方式来构造我的汽车类是否可行/切合实际,即它实际上带有轮子,可以旋转并且可以使汽车向前移动?汽车需要具备某些特性才能在地面上获得牵引力。

这确实可以带来很多好处,例如在具有不同属性等的不同表面(冰,污垢,柏油碎石)上行驶

我正在寻找最佳方法和技巧。

1 个答案:

答案 0 :(得分:0)

您可以将所有汽车和车轮作为SKSpritekit都添加到一个SKNode,为其提供位置,然后水平移动父节点。有多种方法可以水平移动节点,可以通过创建SKAction来做到这一点-moveTo,moveBy,移动或仅通过施加力,推动力,速度parentNode.physicsBody.applyImpulse即可。当您移动父节点时,它将在其中移动所有节点。当然,如果您使用适当的SKAction,则可以让车轮自然旋转,以便它们旋转-它将永远旋转。

    let parentNode = SKShapeNode(rectOf: CGSize(width: 200, height: 100))
    parentNode.position = CGPoint(x: 300, y: 100)
    addChild(parentNode)
    let car = SKSpriteNode(imageNamed: "car")
    let wheel1 = SKSpriteNode(imageNamed: "wheel")
    let wheel2 = SKSpriteNode(imageNamed: "wheel")
    wheel1.position = CGPoint(x: -110, y: -20)
    wheel2.position = CGPoint(x: 135, y: -20)
    car.position = CGPoint(x:40, y: 50)
    let spin = SKAction.rotate(byAngle: -.pi*2, duration: 10)
    let spinForever = SKAction.repeatForever(spin)
    wheel1.run(spinForever)
    wheel2.run(spinForever)
    parentNode.addChild(wheel1)
    parentNode.addChild(wheel2)
    parentNode.addChild(car)
    let move = SKAction.move(to: CGPoint(x: 1000, y: 100), duration: 50)
    parentNode.run(move)

请记住,子节点的位置是相对于其父节点的