假如有2種對象player和觸發器(trigger),當玩家進入到觸發器區域時則由觸發器對象通知所有注冊過觸發器通知的對象,然後由這些對象自行選擇做一些事情,比如:阻礙player的前景,觸發陷阱等等.
那麼如何檢測player是否進入觸發器區域呢?這就需要player和trigger對象發生碰撞.但是等等,player對象不僅僅和觸發器對象發生碰撞,還和邊界(border)對象發生碰撞.
為了區分不同種類的對象是否發生碰撞,我們需要正确設定好對象的分類屬性和掩碼屬性.
先看player對象,其分類為player,掩碼設定為trigger,border和obstacle;因為player需要和trigger,邊界和障礙物發生碰撞.
再看trigger對象,其分類為trigger,掩碼設定為player;這意味着trigger隻能和分類為player的對象發生碰撞(除非對象分類為空?),因為player已經在其masks中設定了trigger,并且trigger也在自身的masks中設定了player.
碰撞僅僅發生參與的兩者互相的分類在對方的掩碼中,或者當至少一個參與者的掩碼區域為空(這表示該參與者masks包括所有的其他mask,意味着它将和所有其他對象碰撞).