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