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