【问题标题】:didBeginContact not called on fast moving spritedidBeginContact 没有在快速移动的精灵上调用
【发布时间】:2015-03-19 00:01:37
【问题描述】:

我有一个游戏,用户在我的主精灵周围拖动。主精灵与其他精灵碰撞得很好,除非用户非常快速地拖动主精灵。有时,当主精灵快速移动时,物理实体正好相互穿过,两个精灵突然重叠。我有一个断点集,它记录了 didBeginContact 的命中计数,但它没有被命中。

精灵可以移动多快并且仍然被 didBeginContact 覆盖是否有限制?我是否允许用户以比游戏循环处理碰撞的速度更快的速度移动精灵?

同样,当精灵以低速移动时,物理运行正常。

【问题讨论】:

  • 如果你的精灵(球)以 x+50 的速度移动,而你的碰撞对象(墙)只有 20 倍宽,那么你的球将在一帧内直接越过你的墙而不会发生碰撞发生。

标签: ios sprite-kit skphysicsbody skphysicsworld


【解决方案1】:

记住,这些都是逐帧计算的。您可能将精灵移动得太快,以至于它以太少的帧数出现在屏幕的另一侧而不能算作碰撞。如果有人痉挛地移动手指,它可能不会抓住它。你可以对精灵或其他东西设置某种速度限制。

【讨论】:

    【解决方案2】:

    尝试用usesPreciseCollisionDetection = YES设置物理体

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多