射线
//创建射线,提前给定射线的发射位置和方向
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//Ray ray = camera.ScreenPointToRay(Input.mousePosition);
//Ray ray = new Ray(startPosition,endPosition);
//碰撞信息,用于接收碰撞到的物体是谁以及碰撞点的位置和信息
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//真正的发射射线的地方,需要指定发射哪一条射线,并传入一个Out参数,用于接收碰撞信息,返回值为true时表示碰到了物体
if (Input.GetMouseButtonDown(0))
{
Destroy(hit.collider.gameObject);
}
}
射线的击穿
1.第一种方式
//第二个参数表示射线射的距离
RaycastHit[] hits;
hits = Physics.RaycastAll(ray, 100);
2.第二种方式
int layerMask = 1 << 9;
Physics.Raycast(ray, out hit, 100, layerMask)
3.防止射线穿透UI
//如果当前鼠标在 ui 上返回true 否则返回false
EventSystem.current.IsPointerOverGameObject()