看书对unity中射线碰撞检测有什么错误?

看书对unity中射线碰撞检测有什么错误?

射线碰撞检测是物体发射射线的过程。 射线与物体碰撞后,可以获得物体的相关信息,然后可以对物体进行一些操作。 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”博客,请务必保留此出处

文章来源:https://www.xjx100.cn/news/584314.html