美文网首页
4.18射线

4.18射线

作者: 胤醚貔貅 | 来源:发表于2017-04-18 16:25 被阅读23次

    usingUnityEngine;

    usingSystem.Collections;

    publicclassCubeMove:MonoBehaviour{

    Rayray;//声明射线

    RaycastHit   hit;//射线碰撞信息

    voidStart(){

    }

    voidUpdate(){

    Move();

    //从自身位置发射射线

    //发射一条射线,返回检测到的第一个物体,返回值为bool值

    //Rayray=newRay(transform.position,transform.forward);

    //一般射线(只能检测到一个物体)

    //Debug.DrawLine(transform.position,hit.point,Color.red);

    //if(Physics.Raycast(ray,outhit,10)){

    //

    //print("有敌情");

    //}

    //可以检测所有物体

    //RaycastHit[]hits=Physics.RaycastAll(ray);

    //

    //if(hits.Length>0){

    //

    //print(hits.Length);

    //}

    //从摄像头位置发出的射线(特殊射线)

    if(Input.GetMouseButtonDown(0)){

    Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);

    Physics.Raycast(ray,out hit);

    }

    if(hit.collider){

    Vector3 tempV3=Vector3.Lerp(transform.position,hit.point,Time.deltaTime);

    transform.position=newVector3(tempV3.x,0.5f,tempV3.z);

    }

    //打开第N层,射线只能检测到这一层

    //LayerMaskmask=1<<(LayerMask.NameToLayer("Cube"));//只能检测到Layer为Cube的物体

    //1<<10打开第十层,当前射线只能检测到第10层上的碰撞体

    //~(1<<10)打开除第10层以外的所有层,除第10层以外的碰撞体都能被检测到

    //~(1<<0)打开所有层

    //(1<<8)| (1<<10)同时打开第8层和第10层

    Rayray2=newRay(transform.position,transform.forward);

    LayerMaskmask=~(1<<LayerMask.NameToLayer("Cube"));//可以检测到除“Cube”以外的所有物体

    if(Physics.Raycast(ray2,outhit,100,mask.value)){

    print(hit.collider.gameObject.name);

    }

    }

    voidMove(){

    float hor=Input.GetAxis("Horizontal");

    float ver=Input.GetAxis("Vertical");

    transform.position+=(transform.forward*ver+transform.right*hor)*Time.deltaTime*20;

    }

    }

    相关文章

      网友评论

          本文标题:4.18射线

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