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

时间:2015-02-06 00:39:54

标签: sprite-kit skphysicsbody skaction

我正在寻找教程,其中的事情定义如下:

  • 飞机是具有动态物理机构的精灵
  • 通过遵循路径
  • 执行平面移动
  • 子弹和飞机之间存在接触检测
  • bullet是精灵,它的物理体设置为静态(在我看来这有点不寻常)

以下是tutorial的链接以获取更多信息。

问题:

  1. 当我们使用动作来移动物理身体时,我们如何设置身体的动态属性是有区别的吗?因为子弹是静止的,但仍然没有移动的问题。

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

  3. 我认为这很好,但我想充分意识到当我们使用这种方法时会发生什么,并且有任何缺点或可能存在的问题。

    SO上有posts表明我们不应该使用动作来移动动态物理机构。我知道在任何情况下我们都不能使用这种方法。例如,这不适用于移动平台与其他对象,因为平台上的主体和动作移动的平台之间将没有正确的物理模拟。但是在本教程中的情况下,我们只需要对可以仅通过操作移动的对象进行联系检测(沿路径移动),我认为这不是问题吗?

1 个答案:

答案 0 :(得分:4)

  1. 静态意味着身体不受物理影响。这并不意味着它无法手动重新定位或移动。因此,如果将某些东西设置为静态,它就会参与物理模拟,但它不会受到影响。想象一架飞机撞山。飞机是动态的,即使参与物理学,山也只会坐在那里。但是你仍然可以使用位置或动作手动移动那座山。

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

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

    但是如果你的物理实体就像一个完全静止的通电,而你只是想让它使用一个动作在一个圆圈中移动那么那就好了。您可能只想使用接触检测来检测子弹,通电等,而不使用物理实际移动它。没错。