public Camera ca;
private Ray ra;
private RaycastHit hit;
void Update
{
if (Input.GetMouseButton(0))
{
ra = ca.ScreenPointToRay(Input.mousePosition);
//int laymask=2的n次方
if (Physics.Raycast(ra, out hit, 100, 256) && Input.GetKey(KeyCode.LeftAlt) == false&&EventSystem.current.IsPointerOverGameObject()==false)
{
hit.collider.gameObject.transform.position = ca.ScreenToWorldPoint
(new Vector3(Input.mousePosition.x, Input.mousePosition.y, hit.collider.gameObject.transform.position.z + 12));
//这个12是物体和Camera之间z方向的距离,如果不加的话,你可以试下。。。。
}
}
}
//阻挡射线穿透的问题
//EventSystem.current.IsPointerOverGameObject()的值为false,说明鼠标点击到了3D物体,为true说明点击的是ui。