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

时间:2013-04-02 10:11:14

标签: actionscript-3 game-physics haxe physics-engine nape

我有多个宇宙飞船(SHIP_CB CbType),可以全部射击导弹(BULLET_CB CbType)。如何设置sensorGroupsensorMaskInteractionListeners,以便我得到以下行为:

  1. 船舶全部碰撞并互相反弹。
  2. 子弹根本不会反应或互相感知。
  3. 子弹与Enemy Ships有关。
  4. 子弹感觉射击子弹的船只。
  5. 是否可以通过在每个对象上设置正确的sensorGroup和sensorMask来获取所有这些行为?

1 个答案:

答案 0 :(得分:8)

假设子弹只是感觉到,所以不应该以任何方式与射击它的船相互作用,一种方法是:

从默认的一切开始,

每艘船

ship.group = new InteractionGroup(true);

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

将子弹设置为与拍摄它的船具有相同的交互组。 这样,因为在组上的ignore = true,任何从给定的子弹发射的子弹 船舶将被排除在与该船舶相互作用之外。

bullet.group = ship.group;

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

bulletShape.sensorEnabled = true;

使用除了自己以外的所有东西使子弹形状感觉良好。

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

参考:Nape Manual: InteractionGroups

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

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