2013-04-02 36 views
3

我有多個飛船(SHIP_CB CbType),可以全部拍攝導彈(BULLET_CB CbType)。如何建立有sensorGroupsensorMaskInteractionListeners,所以我得到了以下行爲:傳感器組和傳感器掩模船舶和子彈在納佩組合

  1. 船舶碰撞都和相互彈開。
  2. 子彈根本不反應或感覺到對方。
  3. 子彈感與敵船。
  4. 子彈不要感覺與船射擊子彈。

甚至可以通過在每個對象上設置正確的sensorGroup和sensorMask來獲得所有這些行爲嗎?

回答

7

假設子彈永遠只能去感,所以不應該與他們開槍船舶上的任何方式進行交互,一個辦法是:

一切開始違約,

每個船隻的

ship.group = new InteractionGroup(true);

對於給定船船'

集創建子彈每發子彈具有相同的相互作用組作爲誰出手吧船。 這種方式,因爲忽略=真的組,從一艘給定的 船發射的子彈將被排除在與該船交互。

bullet.group = ship.group;

的子彈各自的形狀,大概只有1 讓子彈形狀傳感器

bulletShape.sensorEnabled = true;

化妝子彈形狀與除自己的一切感覺。

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

裁判:Nape Manual: InteractionGroups

你 '可能' 這樣做純粹與sensorGroup/sensorMask。但你會被限制在31艘不同的船上,而且邏輯會更復雜一些。

你也可以使用回調系統來忽略船舶與它所觸發的子彈之間的交互作用,並在回調中使用一些額外的邏輯,但是它比使用InteractionGroup的東西要沉重得多。

+0

這個描述了我究竟在做什麼。謝謝。我對Nape很陌生,並不知道使用團體屬性。我試圖用'sensorGroup'和'sensorMask'來做所有事情,正如你所說的那樣,它是有限的。 –