我是一位iOS开发人员,想要在SpriteKit中制作游戏。我有零游戏开发经验:)
这将是一个2D游戏,其中汽车在屏幕的水平轴上从A行驶到B。会有颠簸和其他障碍。我想应用很多物理,爆炸等方法。汽车会受到它们的撞击,减速,翻倒等。此外,汽车可能会失去方向盘。
我的问题听起来很琐碎:如何使汽车“行驶”。
以这样一种方式来构造我的汽车类是否可行/切合实际,即它实际上带有轮子,可以旋转并且可以使汽车向前移动?汽车需要具备某些特性才能在地面上获得牵引力。
这确实可以带来很多好处,例如在具有不同属性等的不同表面(冰,污垢,柏油碎石)上行驶
我正在寻找最佳方法和技巧。
答案 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)
请记住,子节点的位置是相对于其父节点的