4

我有多艘宇宙飞船(SHIP_CBCbType),它们都可以发射导弹(BULLET_CBCbType)。我如何在那里设置sensorGroupsensorMask所以InteractionListeners我得到以下行为:

  1. 船只相互碰撞并反弹。
  2. 子弹根本不会相互反应或感知。
  3. 子弹感应敌舰。
  4. 子弹对发射子弹的船没有感觉。

是否有可能仅通过在每个对象上设置正确的 sensorGroup 和 sensorMask 来获得所有这些行为?

4

1 回答 1

9

假设子弹只会感应到,因此不应以任何方式与发射它们的船相互作用,一种方式是:

从一切默认开始,

每艘船

ship.group = new InteractionGroup(true);

对于为给定的船“船”创建的每个子弹

将子弹设置为与发射它的船具有相同的交互组。这样,由于组上的 ignore=true,从给定飞船发射的任何子弹都将被排除在与该飞船的交互之外。

子弹.组=船组;

对于每种形状的子弹,可能只有 1. 制作子弹形状传感器

bulletShape.sensorEnabled = true;

使子弹形状对除了它们自己之外的所有事物都有意义。

bulletShape.sensorGroup = 2;
bulletShape.sensorMask = ~2;

ref: Nape 手册:InteractionGroups

您“可以”纯粹使用 sensorGroup/sensorMask 来做到这一点。但是你会被限制在 31 艘不同的船上,而且逻辑会更复杂一些。

您还可以使用回调系统来忽略飞船和它发射的子弹之间的交互,并在回调中添加一些额外的逻辑,但它比使用 InteractionGroup 的东西要重得多。

于 2013-04-02T18:25:31.003 回答