[英]Raycast is detecting player
playerLayer = 11;
if (Input.GetMouseButtonDown(1))
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, crooshair.transform.position - transform.position, 100, ~playerLayer);
if (hit != null)
{
Interactable interactable = hit.collider.GetComponent<Interactable>();
if (interactable != null)
{
SetFocus(interactable);
}
}
else
Debug.Log("Nothing was hit");
}
每次我的播放器拍攝光線投射時,它最終都會擊中我的播放器。 這是因為光線投射是在播放器內部開始的(這是我想要它做的),但無論我做什么,它都會一直檢測到播放器。 我使用了圖層,嘗試禁用對撞機中的查詢啟動,甚至從播放器外部的一點點開始光線投射,但沒有任何效果。 當我嘗試從播放器偏移光線投射時,它有時會起作用,但前提是您朝偏移的方向射擊。 請幫忙。
您的Player
是否有任何未分層為playerLayer
的Collider
對象? 為了確保您的圖層蒙版設置正確,我建議在檢查器中分配它,然后使用波浪號反轉它。
public LayerMask playerLayer;
void Update()
{
if (Input.GetMouseButtonDown(1))
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, crooshair.transform.position, 100, ~playerLayer);
if (hit != null)
{
Interactable interactable = hit.collider.GetComponent<Interactable>();
if (interactable != null)
{
Debug.Log("Hit" + hit.collider.name);
}
}
}
}
如果您仍然無法通過在檢查器中分配LayerMask
進行調試,如果您可以發布您的層次結構,它可能有助於解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.