【问题标题】:SpriteKit velocity unit and thrownSpriteKit 速度单位和抛出
【发布时间】:2014-12-31 16:31:21
【问题描述】:

我尝试使用 SpriteKit 设计游戏,但我遇到了关于单位的问题。根据 SpriteKit 指南,它使用 SI 单位,我尝试编写弹丸运动代码。根据flight time equationT-Flight = 2 * V-YComp / g

我在我的代码中应用了以下参数:

V-YComp = 20 m/sec
g = 10 m/sec^2

根据以上参数,T-Flight 必须是 4 秒。

我使用以下行将速度应用于对象:

ball.physicsBody?.velocity = CGVectorMake(0, 20)

由于上述代码,对象不会被抛出。

以下引用 Xcode 指南:

The physics body’s velocity vector, measured in meters per second.

怎么了?

【问题讨论】:

  • 还请记住,现实世界的物理方程通常只能非常粗略地转换为游戏物理,即最终的行为可能或多或少接近现实,但绝不会与现实世界完全一样(即2d 物理不会通过空气阻力等施加阻力)

标签: sprite-kit game-physics


【解决方案1】:

你正在应用一个固定的速度。

相反,您应该使用应用冲动:

[ball.physicsBody applyImpulse:CGVectorMake(0, 20)];

此外,请记住使其动态化,以便物理与您的精灵一起使用:

ball.physicsBody.dynamic = YES;

【讨论】:

  • 感谢您的回答。我应用了这个方法。 SpriteKit 指南将脉冲描述为“描述在每个维度中传递了多少动量的向量......”。 p = m * v 并且我的物体的质量是 0,087 kg,因此 v = 230 m/s 并且 T-Flight 必须是 46s。但是,模拟器中的 T-Flight 为 0.28 秒。我不明白 SpriteKit 中的物理原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
相关资源
最近更新 更多