ios - SpriteKit 驾驶技巧
问题描述
我是一名想要在 SpriteKit 中制作游戏的 iOS 开发人员。我的游戏开发经验为零:)
这将是一个 2D 游戏,汽车在屏幕的水平轴上从 A 行驶到 B。会有颠簸和其他障碍物。我想应用很多物理,爆炸等。汽车会受到它们的影响,减速,翻滚等。另外,汽车可能会失去一个轮子。
我的问题可能听起来微不足道:如何让汽车“开车”。
是否有可能/现实地构造我的汽车类,使其实际上有轮子,可以旋转并实际向前移动汽车?汽车需要某些特性才能在地面上获得牵引力。
这将允许真正的美好事物,例如在具有不同特性的不同表面上驾驶等(冰,污垢,停机坪)
我正在寻找如何做到这一点的最佳实践和技术。
解决方案
您可以将汽车和车轮作为 SKSpritekits 全部添加到一个 SKNode,在该节点中给它们位置,然后水平移动父节点。有多种方法可以水平移动节点,您可以通过创建 SKAction - moveTo、moveBy、move 或仅通过施加力、脉冲、速度 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)
请记住,子节点的位置是相对于其父节点的
推荐阅读
- javascript - 如何在js中为两个不同类型的数组列表使用相同的数组?
- c# - DrawImage 绘图对于缩放的图像不正确
- php - 如何编写自定义查询codeigniter
- css - 可滚动的东西在 Firefox 上可以正常工作,但在 chrome 上不行
- react-native - 在 react-native-webview 中谷歌登录后的空白屏幕
- java - java -jar 类路径是指耳朵里面的jar
- php - Laravel 一次查询中的两个数据库连接
- python - 如何将参数从 xargs 传递给 python 脚本?
- php - 大于 2048 字符的 PHP 字符串变为 tu null
- xml - xslt 从 xml 中删除所有属性