簡體   English   中英

Raycast 正在檢測玩家

[英]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是否有任何未分層為playerLayerCollider對象? 為了確保您的圖層蒙版設置正確,我建議在檢查器中分配它,然后使用波浪號反轉它。

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.

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