簡體   English   中英

OnTriggerEnter2D 被未標記為觸發器的碰撞器觸發?

[英]OnTriggerEnter2D being triggered by colliders not marked as trigger?

我正在開發一個標准的自上而下的 2D RPG。 在我的 Player 對象上,我有兩個碰撞器,一個是常規的 2D 盒碰撞器,未標記為處理碰撞的觸發器,它在垂直方向上比播放器小。 我有另一個盒子對撞機 2D,它被標記為觸發器,作為某種碰撞盒工作,它覆蓋了整個玩家-。 在拾取物品時,我想使用觸發器碰撞器,所以我使用了以下代碼:

private void OnTriggerEnter2D(Collider2D other)
{
    if (other.GetComponent<DroppedItem>() != null && other.isTrigger)
    {
        Debug.Log("Picked up item.");
        DroppedItem item = other.GetComponent<DroppedItem>();
        inventory.AddItem(item.item, item.itemAmount);
        Destroy(item.gameObject);
    }
}

每次我與掉落的物品發生碰撞時都會觸發兩次調試消息,該物品也有一個觸發碰撞器,即使我隨后銷毀了該物品。 如果我將觸發碰撞器標記為非觸發,調試消息也會觸發兩次,反之亦然。 我如何避免這種情況?

似乎您需要在播放器上安裝對撞機,並在項目上安裝觸發器。 然后,需要將腳本附加到項目上,該腳本調用播放器上添加項目的函數,然后在腳本中您可以銷毀該項目。 我能想到的為什么會被調用兩次的唯一原因是您的腳本同時在項目和播放器上。

簡單圖

(帶有一些偽代碼的簡單圖)

暫無
暫無

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

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