2023年2月6日 星期一

Unity ContactFilter 註記

 Unity大部分新式的Physics,Physics2D的方法會使用ContactFilter。對於求一個區域有多少重疊的collider的數據有很大需求。

但是初次著摸就會摸不著頭腦這東東的原理。主要原因是不知道新建這個ContactFilter時的初始是如何,以及各Physics方法如何讀取這ContactFilter的設定資訊。


如果或搜尋求解找到這裏,以下寫兩個小註:

.Filter,曰「過濾」,但,ContactFilter不是「過濾掉」你所定義的限制,反之是「篩餘下」你所定義限制。例如:1,2,3,4,5,你定義Filter為「偶數」,出來的結果是「篩餘下」的2,4,不是「過濾掉」2,4而餘下1,3,5。

如果遇著求的結果不是所要物件的bug,可以先肯定上面這點。

.new一個ContactFilter的時候,該ContactFilter不理會trigger類型(包括自己,例如是自己作為trigger的collider來使用諸如Collider.Overlapxxx的話)。但是ContactFilter.NoFilter後,該ContactFilter受理trigger類型(包括自己,你不會想一個補師無限地補自己的血)。


沒有留言:

張貼留言