2018-10-19物理射线 Ray

从一个点向一个方向,发射一根无线长的射线,这根射线与场景中其他对象物体的碰撞体组件发生碰撞,射线即结束。

由于射线可以与物理组建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

获取射线碰撞点。

物理射线使用步骤:

第一步:创建一根射线。

第二步:检查这个射线与其他物体的碰撞,得到碰撞信息。

第三步:通过碰撞信息对碰撞到的物体进行处理。

猜你喜欢

转载自blog.csdn.net/qq_31726339/article/details/83184205