我想檢查玩家物件的特定半徑內是否可以互動。為此,我使用 Physics2D.OverlapCircle 來檢查玩家附近的 2DColliders。我不太確定為什么引數 LayerMask.NameToLayer("Interactable") 盡管該層上有物件但沒有檢測到任何東西。如果洗掉第三個引數,它會檢測到距離最近的玩家
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CheckInteractable : MonoBehaviour
{
void Update()
{
Collider2D checkRadius = Physics2D.OverlapCircle(transform.position, 5, LayerMask.NameToLayer("Interactable"));
if (checkRadius != null)
{
print(checkRadius.ToString());
}
}
}
盡管可互動層中有物件,但不會列印字串
uj5u.com熱心網友回復:
LayerMask 有點棘手。回傳的事物回傳LayerMask.NameToLayer索引而不是圖層蒙版。
您會看到,圖層掩碼實際上是位掩碼,因此索引不是給定位掩碼的結果。更多資訊在這里
您可以使用該LayerMask.GetMask方法通過代碼創建一個,甚至可以添加一個LayerMask序列化的成員變數,以便能夠在編輯器中創建掩碼
希望有所幫助;)
uj5u.com熱心網友回復:
您需要使用 LayerMask.GetMask()
LayerMask.GetMask("Interactable")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/386428.html
