【问题标题】:Is it possible to determine that all Sprite Kit scene collisions have played out?是否可以确定所有 Sprite Kit 场景碰撞都已结束?
【发布时间】:2014-03-21 15:10:27
【问题描述】:

我已经浏览了关于 sprite-kit、文档、可用演示的 SO 问题页面,以及我的大脑试图解决这个问题但没有完成的巨大空白。

p>

正在开发基于回合(使用 Game Center)、基于物理的游戏的概念验证。玩家轮流将一个节点放置在其他节点的集合中,并让物理效果发挥作用。我感到困惑的地方是确定所有碰撞都已经结束并且回合已经结束。

似乎节点从不停止碰撞。

【问题讨论】:

    标签: ios 2d sprite-kit physics


    【解决方案1】:

    这是物理模拟的一项棘手任务。

    首先,在启用重力的情况下,您总是有一个作用在物体上的力,它可能会阻止物体静止。因此,您需要每隔几步(或者如果必须的话,每帧)测试每个物体,看看它的速度矢量长度是否小于给定的阈值。然后手动设置body的resting状态为YES。

    在接触过程中,body 可能会再次唤醒,因此在didSimulatePhysics 中的接触解析后执行此步骤至关重要。

    诀窍在于找到一个足够大的阈值,以确保结束“物理纠缠”,同时又不会太高以使物体在明显不应该停止的地方停止。

    即便如此,您可能还需要设置一个计时器,该计时器在每个物体的速度低于另一个(更高)阈值时启动,表明这些物体无论如何都可能没有多少力,并且如果在宽限期(即 10 秒)之后) 身体还没有完全静止,但低于这个阈值,考虑解决碰撞(就游戏而言)。

    此外,仍然没有静止的尸体的数量可能是结束游戏的一个指标,即如果只有 3 或 4 个尸体仍在移动,那么可能也不会发生太多事情。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 2014-01-09
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多