nape中船只和子弹的sensorGroup和sensorMask组合

Ada*_*rte 4 haxe actionscript-3 game-physics physics-engine nape

我有多个宇宙飞船(SHIP_CBCbType),可以全部射击导弹(BULLET_CBCbType).如何设置在那里sensorGroup,sensorMaskInteractionListeners让我得到了以下行为:

  1. 船舶全部碰撞并互相反弹.
  2. 子弹根本不会反应或相互感知.
  3. 子弹与Enemy Ships有关.
  4. 子弹不会发射射击子弹的船.

甚至可以通过在每个对象上设置正确的sensorGroup和sensorMask来获得所有这些行为吗?

del*_*uca 8

假设子弹永远只能去感,所以不应该与他们开枪船舶上的任何方式进行交互,一个办法是:

从一切违约开始,

对于每艘船

ship.group = new InteractionGroup(true);

为给定船舶'船'创建的每个子弹

将子弹设置为与拍摄它的船具有相同的交互组.这样,由于在群组中忽略= true,从指定船舶发射的任何子弹都将被排除在与该船舶相互作用之外.

bullet.group = ship.group;

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

bulletShape.sensorEnabled = true;

除了自己以外,用子弹制造子弹形状.

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

参考:Nape手册:InteractionGroups

你可以用sensorGroup/sensorMask完全做到这一点.但你只能被限制在31艘不同的船上,而且逻辑会更复杂一些.

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