鼠标拾取物体并且移动

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。

你可能感兴趣的:(鼠标操作)