SpriteKit驾驶技术

问题描述 投票:-1回答:1

我是一个想在SpriteKit中制作游戏的iOS开发者。我有零游戏开发经验:)

这将是一个2D游戏,其中一辆汽车从A到B在屏幕的水平轴上行驶。会有颠簸和其他障碍物。我想应用很多物理,爆炸等等。汽车会受到它们的影响,减速,折腾等等。此外,汽车可能会失去一个轮子。

我的问题可能听起来微不足道:如何让汽车“开车”。

以这样的方式构建我的汽车类是否可能/现实,它实际上有轮子,旋转并实际上向前移动汽车?汽车需要某些特性才能在地面上获得牵引力。

这将允许真正的好东西,如在不同的表面上驾驶具有不同的属性等(冰,污垢,柏油碎石)

我正在寻找有关如何做到这一点的最佳实践和技巧。

ios swift sprite-kit game-engine game-physics
1个回答
0
投票

您可以将汽车和车轮作为SKSpritekits添加到一个SKNode,在该节点中给出它们的位置,并水平移动父节点。有多种方法可以水平移动节点,你可以通过创建SKAction - moveTo,moveBy,move,或者只是通过施加force,impulse,velocity 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)

请记住,子节点的位置与其父节点相关

© www.soinside.com 2019 - 2024. All rights reserved.