微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpriteKit / Swift ApplyImpulse 在当前节点方向

如何解决SpriteKit / Swift ApplyImpulse 在当前节点方向

不幸的是,我遇到了一个简单的“问题”。

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

转向已解决。使用脉冲给节点一个新的方向

...问题是:

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

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

结果

  1. 节点没有朝它应该的方向移动。特别是如果 rad 是负数... :-D

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

感谢您的帮助!

问候 萨沙

解决方法

下面的代码取自这个 video,在那里他们让子弹朝着与太空船指向的方向相同的方向前进。 如果您的精灵纹理方向指向上,则需要调整旋转,而 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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。