天天看點

Unity Physics.Raycast的參數layermask不起作用

if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            Ray rayCam = Camera.main.ScreenPointToRay(Input.mousePosition);
             LayerMask bricksLayer = 1 << LayerMask.NameToLayer("Bricks");
            if (Physics.Raycast(rayCam, out hit, bricksLayer))
            {
                    selectedGmObj = hit.collider.gameObject; //獲得點選的物體
                    Debug.Log("select : " + selectedGmObj.name);
            }
        }
           

發現無論哪個層都被選中。

解決方法:加一個距離參數,就OK了。

改成 if (Physics.Raycast(rayCam, out hit, 100.0f, bricksLayer))

原因應該是layerMask被當成distance了。。。

static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool

繼續閱讀