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驾驶技术的主要内容,如果未能解决你的问题,请参考以下文章