簡體   English   中英

SpriteKit:為兩個對象設置contactTestBitMask的優點/缺點?

[英]SpriteKit: pros/cons of setting contactTestBitMask for both objects?

假設我們要監視節點A和節點B之間的聯系,即使僅在其中一個節點上設置contactTestBitMaskdidBeginContact似乎也可以正確contactTestBitMask 換句話說,這段代碼似乎可以正常工作:

nodeA.physicsBody?.categoryBitMask = NodeACategory

nodeB.physicsBody?.categoryBitMask = NodeBCategory
nodeB.physicsBody?.contactTestBitMask = NodeACategory

在節點A上設置contactTestBitMask是否也有好處? 該代碼更加簡潔,只為一個對象設置了遮罩,但是有我們忽略的缺點嗎?

它似乎沒有任何區別。

根據Apple的文檔:

當兩個實體共享相同的空間時,通過執行邏輯AND操作,將每個實體的類別掩碼與另一個實體的接觸掩碼進行測試。 如果任何一個比較結果都為非零值,則會創建一個SKPhysicsContact對象,並將其傳遞給物理世界的委托。 為了獲得最佳性能,請僅在聯系人掩碼中設置您感興趣的交互的位。

如果nodeB也未與nodeA聯系,則nodeA似乎無法與nodeB聯系。 所以nodeA聯系nodeB; 相互聯系的nodeB以及相互聯系的節點A和B都被視為完全相同,並且將包含nodeA和nodeB的SKPhysicsContact對象傳遞給didBeginContact

請注意,這與collisionBitMask非常不同,后者的nodeA可以與nodeB碰撞並受其影響,但是nodeB可以完全不受影響。

否。在某些情況下,僅在聯系對象A而不是對象B時才需要通知您。因此,每個對象都有一個contactBitMask的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM