SpriteKit驾驶技术

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpriteKit驾驶技术相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

答案

您可以将汽车和车轮作为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)

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

以上是关于SpriteKit驾驶技术的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SpriteKit 节点移动为汽车驾驶体验?

SpriteKit 中的顶点着色器

iOS SpriteKit:以正确的方向移动节点

谷歌丰富的片段不工作

特斯拉自动驾驶造假实锤:总监出马亲自作证,撞车片段被删,所有功能均为预编程...

[AutoCars]自动驾驶汽车概述(下)