【问题标题】:SpriteKit / Swift ApplyImpulse in current node direction当前节点方向的 SpriteKit / Swift ApplyImpulse
【发布时间】:2021-07-18 02:02:20
【问题描述】:

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

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

车削已解决。使用冲动给节点一个新的方向

...问题是:

加速。 我还利用冲动让节点“向前”。但它不想在节点转向的方向上前进。

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

结果

  1. 节点未按应有的方向移动。特别是如果 rad 是负数... :-D

所以问题是:我如何设置推动力/速度以将我的未来宇宙飞船向前移动到设定的方向。

感谢您的帮助!

问候 萨沙

【问题讨论】:

  • 什么是太空射击游戏?如果是我想的那样,那宇宙飞船为什么还要移动呢?它通常是移动的背景图像。
  • El Tomato 是对的。本视频教程可能会为您提供一些有用的信息。 youtube.com/watch?v=0-lM51yI-PA
  • 你好,这不是那种太空拍摄。
  • 两位您好,感谢您的支持。这不是那种太空射击游戏。我想通过空间中的脉冲/推进器来控制宇宙飞船。意味着按一下按钮 = 推进器的一点推动力。所以左转和右转运行都很好。但是让船向前移动对我来说有点棘手。当前的想法是,在我的“宇宙飞船”中再创建 2 个节点。一个在前,一个在后,用于获取这两个节点的向量。但这里的问题是,如何计算未引用父节点但引用框架/“祖父母”的子节点的位置

标签: swift vector sprite-kit skspritenode


【解决方案1】:

下面的代码取自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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    相关资源
    最近更新 更多