SpriteKit / Swift ApplyImpulse 在当前节点方向

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

我想用 SpriteKit 编写我的第一个“太空射击游戏……或类似的东西” 所以我(目前:-)): 一个节点, 三个按钮:1 个左转按钮,1 个右转按钮,1 个加速按钮。

转弯解决了。使用脉冲为节点提供新方向

...问题是:

加速。 我还使用冲动来让节点“前进”。但它不想沿着节点转动的方向前进。

我解决问题的想法: 使用 zRotation 的辐射点,计算度数,通过使用“rad * cos(度)”/“rad * sin(度)”计算出 CGVector。

结果

  1. 节点没有朝应有的方向移动。特别是如果拉德是负数......

所以问题是:我怎样才能设置一个脉冲/速度来让我未来的宇宙飞船朝着设定的方向前进。

swift vector sprite-kit skspritenode
1个回答
2
投票

下面的代码取自这个视频,他们正在使子弹朝着与太空飞船指向的方向相同的方向移动。 如果您的精灵纹理方向朝上,则需要调整旋转,而 SpriteKit 使用正确的方向作为 0 旋转。

  let speed: CGFloat = 1
  let adjustedRotation = zRotation + (CGFloat.pi / 2)
  let dx = speed * cos(adjustedRotation)
  let dy = speed * sin(adjustedRotation)
  spaceship?.physicsBody?.applyImpulse(CGVector(dx: dx, dy: dy))
© www.soinside.com 2019 - 2024. All rights reserved.