当只需要接触检测时,我可以使用 SKAction 移动动态物理体吗?

Can I move dynamic physics bodies using SKAction when only contact detection is needed?

我正在查看定义如下的教程:

这里是 link 到 tutorial 了解更多信息。

问题:

  1. 当我们使用动作来移动 physicsBodies 时,我们如何设置 body 的动态 属性 有什么不同吗?因为子弹是静止的但是移动还是没有问题的

  2. 当我们遇到这样的情况,我们不需要碰撞检测,只需要接触检测,我们不能通过施加力或脉冲来移动精灵(敌人),什么是好办法?这种方法正确吗?

我认为这是一个很好的方法,但我想充分了解当我们使用这种方法时到底发生了什么,是否有任何缺点或可能出现的问题。

SO 上有 posts 建议我们不应该使用动作来移动动态物理物体。我知道我们不能在所有情况下都使用这种方法。例如,这不适用于上面有其他 object 的移动平台,因为平台上的 body 和通过动作移动的平台之间没有正确的物理模拟。但是在像本教程这样的情况下,我们只需要 object 的接触检测,它只能通过动作移动(沿着路径移动)我想这不是问题?

  1. static 表示 body 不受物理影响。这并不意味着它不能手动重新定位或移动。因此,如果某物设置为静态,它会参与物理模拟,但不受其影响。想想一架飞机撞上一座山。飞机是动态的,这座山即使参与物理也只是坐在那里。但是您仍然可以使用位置或动作手动移动那座山。

  2. 不完全理解你的问题,但我会试一试。

您可以手动移动 physicsBody(使用位置 属性 或操作),但您需要问问自己为什么要这样做。您通常不想这样做,因为它们绕过了物理模拟。如果你强迫它四处移动,那么首先使用物理 body 有什么意义……对吧?

但是,如果您的物理学body 类似于完全静态的加电,而您只是希望它使用一个动作绕着圆圈移动,那就没问题了。您可能只想对子弹、通电等使用接触检测,而无需使用物理实际移动它。没有错。