我試過了一切。無論我放在其下的什麼樣的GameObject(立方體等),玩家都會落空。它有一個圓形的礦工和一個剛體。球員正在落地
如何從通過地板
我應該指出,停止下落物體,玩家應該死一次談到接觸到任何東西,所以我不知道如何處理這一點。
我試過了一切。無論我放在其下的什麼樣的GameObject(立方體等),玩家都會落空。它有一個圓形的礦工和一個剛體。球員正在落地
如何從通過地板
我應該指出,停止下落物體,玩家應該死一次談到接觸到任何東西,所以我不知道如何處理這一點。
對於您希望播放器通過的對象,觸發器必須是真實的。玩家isTrigger應始終爲假。
玩家需要附上一個rigidbody2D。
在您的代碼上進行調試,對於觸發的碰撞檢查OnTriggerEnter2d和非觸發的碰撞檢查OnCollisionEnter2D進行檢查。
如果對象在地板上下落,這裏是要檢查的事情。
。是否將Collider附加到該對象?如果沒有,則將Collider或Collider2D附加到該對象。
。是否在任何物體碰撞器上啓用觸發器?如果是,則在兩個對撞機上禁用IsTrigger。
。如果Rigidbody附加到GameObject上,那麼請確保玩家在點擊「Play」之前比樓層高100%,否則會遇到更多問題。
。GameObject的大小可能很小。真的很小。對象在與另一個對象發生衝突之前的大小有限制。嘗試調整對象的大小,然後將相機移回。
如果我爲我的播放器禁用isTrigger,那麼它將無法通過我需要它的其他對象去通過 。
這根本不是問題。你可以使用圖層來讓Unity設置哪些對撞機可以與另一個碰撞。只需禁用isTrigger然後使用:
對於2D:
Physics2D.IgnoreCollision(yourFirstCollider, yourOtherCollider, true);
或
Physics2D.IgnoreLayerCollision(yourLayer, yourOtherLayer, true)
對於3D:
Physics.IgnoreCollision(yourFirstCollider, yourOtherCollider, true)
或
Physics.IgnoreLayerCollision(yourLayer, yourOtherLayer, true);
這將讓玩家不會穿過場地,而是穿過任何其他你想要的物體。您也可以從編輯器設置中執行此操作...編輯 - >項目設置 - >物理 - >或編輯 - >項目設置 - >物理2D
玩家應該死一次它與任何東西接觸,所以 我不知道如何處理這個
這是無關的問題,但OnCollisionEnter2D
用於檢測collsion。你可以在播放器上撥打Destroy
。
void OnCollisionEnter2D(Collision2D collision)
{
Destroy(player);
}
編輯:
如果您還需要當玩家接觸其他對撞機來檢測,但不希望他們實際上對撞機,那麼你可以做什麼上面,然後添加描述我子對象與球員的碰撞。這些子對象將啓用isTrigger
。然後,您可以使用OnTriggerEnter
函數來檢測那些不是地板的物體之間何時發生碰撞。
void OnTriggerEnter(Collider other)
{
}
我是Unity的atm noob,可能是一個愚蠢的問題,但我是否將這段代碼粘貼到播放器腳本中? 'Physics2D.IgnoreCollision(yourFirstCollider,yourOtherCollider,true);' – ROOT
查看完整示例的[doc](https://docs.unity3d.com/ScriptReference/Physics2D.IgnoreCollision.html)。您需要將Collider2D傳遞給函數。順便說一句,我建議你使用'Physics2D.IgnoreLayerCollision'來代替你只需要傳遞圖層編號。 'Physics2D.IgnoreLayerCollision(3,5,true)'這意味着在第3層和第5層之間沒有collsion。Google「如何在Unity中創建圖層」瞭解更多信息。 – Programmer
對撞機....因爲它是2D對象,您是否將2D對撞機附加到對象和地板上? – Programmer
是的,我已將2D Collider安裝在地板上。但它設法通過 – ROOT
不僅僅對地板而且對另一個對象也是如此。此外,兩者都必須禁用isTrigger。如果這是你所做的,那麼發佈GameObject的Inspector的屏幕截圖。 – Programmer