射线检测

作者: bde04638cca8 | 来源:发表于2016-10-21 14:52 被阅读65次

    首先理解一下什么叫射线。射线相当于物体发射的了一条无限延伸的激光线,当他遇到物体的时候,会返回碰撞信息。

    再来通过这个熟悉下几个函数的实用。

    //定义一个变量收集碰撞信息
    RaycastHit hitinfo;
    //摄像机向鼠标点击的位置发射一根射线
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
    //检测是否碰撞到物体,若有,destroy          
    if(Physics.Raycast(ray, out hitinfo)){
        Destroy(hitinfo.collider.gameObject);            
    }
    

    第二种比较常见的发射射线的情景,比喻主角是否在地上的检测。
    第一步,先把锚点定义在主角的脚步,因为射线会从锚点的位置射出。
    例如

    锚点位置.png

    第二步,从锚点的位置向地面发射一个很短的射线,如果碰撞到了,就是在地面上,如果没有,则人物是跳起状态。(先把地面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);
    

    相关文章

      网友评论

        本文标题:射线检测

        本文链接:https://www.haomeiwen.com/subject/hxqcuttx.html