【问题标题】:Sprite-Kit: Applying physics to a projectile under the influence of moveToSprite-Kit:在 moveTo 的影响下将物理应用于射弹
【发布时间】:2015-03-04 01:03:13
【问题描述】:

我正在制作一个自上而下的游戏,我让大炮开火并让它们的射弹通过SKAction moveTo:duration 移动到点击的位置。我应该让风改变轨迹,所以我将炮弹实现为SKPhysicsBody,我将重力设置为风速,因为它是我能找到的唯一能像风一样施加恒定力的东西。我遇到的问题是moveTo 可能是实施炮弹的错误方法。球按照它应该的路径移动,然后落在我不想要的点击位置。我找不到 moveTo 的好选择。有什么想法吗?

【问题讨论】:

  • 您想将大炮移动到特定位置吗?
  • 不要使用 SKActions 进行实时运动,而是计算到达特定点所需的速度。这将使您的射弹更有活力。
  • @rakeshbs 我希望用户能够单击目标位置,然后让风操纵飞行路径,以便最终位置与他们单击的位置不同。问题是风会改变飞行中途,所以我不能只预先计算端点
  • 改用applyImpulse:

标签: ios objective-c sprite-kit skphysicsbody


【解决方案1】:

您必须求解射弹方程以确定所需的力和应用脉冲的角度。求解方程只需要考虑使用 applyImpulse 施加在弹丸上的重力和冲力,并且知道从大炮到用户点击弹丸目标的距离。

你的 applyImpulse 发射弹丸,你启动你的风和其他外力,这将对弹丸路径产生影响,改变它的目的地,而不是用户点击的目的地。

您需要了解一些物理和数学知识才能重新排列方程并求解它们:)

【讨论】:

  • 你能给出这些物理计算的公式吗?
  • physicsclassroom.com/class/vectors/Lesson-2/… 这是足球的更好例子。为了将力与弹丸的质量和加速度联系起来,您可以使用牛顿定律或简单地说力 = 质量 x 加速度,加速度是速度/时间
【解决方案2】:

不确定是否需要进行所有高级数学运算,只需设置大炮的角度并对炮弹施加脉冲,然后使用 scene.physicsWorld.gravity 作为风,只要确保你也给炮弹一个将 dynamic 和 affectedByGravity 设置为 true 的物理体。

要计算角度,您可以:

let angle = atan2(Double(touch.y - cannon.y),Double(touch.x - cannon.x))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多