我有多艘宇宙飞船(SHIP_CB
CbType),它们都可以发射导弹(BULLET_CB
CbType)。我如何在那里设置sensorGroup
,sensorMask
所以InteractionListeners
我得到以下行为:
- 船只相互碰撞并反弹。
- 子弹根本不会相互反应或感知。
- 子弹感应敌舰。
- 子弹对发射子弹的船没有感觉。
是否有可能仅通过在每个对象上设置正确的 sensorGroup 和 sensorMask 来获得所有这些行为?
我有多艘宇宙飞船(SHIP_CB
CbType),它们都可以发射导弹(BULLET_CB
CbType)。我如何在那里设置sensorGroup
,sensorMask
所以InteractionListeners
我得到以下行为:
是否有可能仅通过在每个对象上设置正确的 sensorGroup 和 sensorMask 来获得所有这些行为?
假设子弹只会感应到,因此不应以任何方式与发射它们的船相互作用,一种方式是:
从一切默认开始,
每艘船
ship.group = new InteractionGroup(true);
对于为给定的船“船”创建的每个子弹
将子弹设置为与发射它的船具有相同的交互组。这样,由于组上的 ignore=true,从给定飞船发射的任何子弹都将被排除在与该飞船的交互之外。
子弹.组=船组;
对于每种形状的子弹,可能只有 1. 制作子弹形状传感器
bulletShape.sensorEnabled = true;
使子弹形状对除了它们自己之外的所有事物都有意义。
bulletShape.sensorGroup = 2; bulletShape.sensorMask = ~2;
ref: Nape 手册:InteractionGroups
您“可以”纯粹使用 sensorGroup/sensorMask 来做到这一点。但是你会被限制在 31 艘不同的船上,而且逻辑会更复杂一些。
您还可以使用回调系统来忽略飞船和它发射的子弹之间的交互,并在回调中添加一些额外的逻辑,但它比使用 InteractionGroup 的东西要重得多。