首先理解一下什么叫射线。射线相当于物体发射的了一条无限延伸的激光线,当他遇到物体的时候,会返回碰撞信息。
再来通过这个熟悉下几个函数的实用。
//定义一个变量收集碰撞信息
RaycastHit hitinfo;
//摄像机向鼠标点击的位置发射一根射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//检测是否碰撞到物体,若有,destroy
if(Physics.Raycast(ray, out hitinfo)){
Destroy(hitinfo.collider.gameObject);
}
第二种比较常见的发射射线的情景,比喻主角是否在地上的检测。
第一步,先把锚点定义在主角的脚步,因为射线会从锚点的位置射出。
例如
第二步,从锚点的位置向地面发射一个很短的射线,如果碰撞到了,就是在地面上,如果没有,则人物是跳起状态。(先把地面Layer设置成ground 层)
ground.png
RaycastHit hitinfo;
//获取地面layer
int groundLayerMask = LayerMask.GetMask("ground");
//判断主角的状态
isGround =Physics.Raycast(transform.position + Vector3.up *0.1f,Vector3.down,out hitinfo,0.2f,groundLayerMask);
网友评论