从一个点向一个方向,发射一根无线长的射线,这根射线与场景中其他对象物体的碰撞体组件发生碰撞,射线即结束。
由于射线可以与物理组建Collider相交互,所以“射线”也称之为“物理射线”。
物理射线相关方法
通过摄像机创建射线。
Camera.main代表tag设置为“MainCamera”的摄像机的camera组件的引用。
m_Camera.ScreenPointToRay(Vector3)
屏幕点转化为射线,这个方法返回一个Ray类型的射线。
这个屏幕点通常写鼠标的点击位置,这样的话,就代表从摄像机的位置开始,往鼠标点击点这个方向,发射一条射线。
Input.MousePosition//鼠标所在的位置值。
Ray 射线,一个结构体。
代码完整格式:
Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
检查射线与其他物体碰撞
RaycastHit//一个结构体,用于存储射线的碰撞信息。
Physics.Raycas(Ray,out RaycastHit)
物理类下面有一个静态方法叫做Raycast(),射线检查。
共有16种重载方式,我们用第三种。
检查这根射线,如果射线与场景中的物理组件 碰撞了,返回值为真,并且将碰撞信息返回给RaycastHit。
RaycastHit hit;
void Update ()
{
if(Input.GetMouseButton(0))
{
Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.tag == "gold")
{
Destroy(hit.collider.gameObject);
}
}
}
}
RaycastHit.Point
获取射线碰撞点。
物理射线使用步骤:
第一步:创建一根射线。
第二步:检查这个射线与其他物体的碰撞,得到碰撞信息。
第三步:通过碰撞信息对碰撞到的物体进行处理。