射线碰撞检测是物体发射射线的过程。 射线与物体碰撞后,可以获得物体的相关信息,然后可以对物体进行一些操作。 PS:个人观点;
光线的发射分为可见光线和不可见光线。 可见的情况是指在游戏中可以看到光线unity 射线碰撞检测,不可见的情况是指游戏运行时,只能在Scene视图中观察到,光线是存在的。 ;
其实两者没有太大区别,关键在于你怎么用;
我们先来看看不可见的情况3D角色,我们看代码;
Ray ray=new Ray(transform.position,transform.forward*100); //定义一个射线对象,包含射线发射的位置transform.position,发射距离transform.forward*100; Debug.DrawLine(transform.position,transform.position+transform.forward*100,Color.red); //这个就是绘制出的射线了,包含发射位置,发射距离和射线的颜色; RaycastHit hitInfo; //定义一个RaycastHit变量用来保存被撞物体的信息; if(Physics.Raycast(ray,out hitInfo,100)) //如果碰撞到了物体,hitInfo里面就包含该物体的相关信息; {//hitInfo.point:碰撞点的位置;//hitInfo.normal:与碰撞点所在平面垂直的向量;//hitInfo.collider.gameobject:可以得到该物体上的所有信息了; }
另一种情况:需要给发出光线的物体添加一个LineRenderer组件;
LineRenderer render; void start() {render=transform.GetComponent();render.SetWidth(0.01f,0.01f); //SetWidth(startWidth,endWidth);render.SetColor(Color.red,Color.red); //SetColor(startColor,endColor);render.SetVertexCount(2); //设置顶点数 } void Update() {Ray ray=new Ray(transform.position,transform.forward*100); //定义一个射线对象,包含射线发射的位置transform.position,// 发射距离transform.forward*100; RaycastHit hitInfo; //定义一个RaycastHit变量用来保存被撞物体的信息;if(Physics.Raycast(ray,out hitInfo,100)) //如果碰撞到了物体,hitInfo里面就包含该物体的相关信息;{//hitInfo.point:碰撞点的位置;//hitInfo.normal:与碰撞点所在平面垂直的向量;//hitInfo.collider.gameobject:可以得到该物体上的所有信息了;if(Input.GetMouseButtonDown(0)){render.SetPosition(0,transform.position); //射线起始位置;render.SetPosition(1,transform.position+transform.forward); //射线方向;}render.SetVertexCount(0); //消除射线;} }
好吧,很简单。 我这里直接写代码了。 如有错误,请指正!共同努力unity 射线碰撞检测游戏图片素材,耶
本文来自“51CTO_King”博客,请务必保留此出处