成人免费黄色网_曰本女同videos_男女在线观看视频_在线亚洲黄色_欧美欧美欧美欧美_bestialityvideo另类最新

  • Unity3D的射線碰撞檢測(cè)方法總結(jié)

    2019/12/12??????點(diǎn)擊:

    射線檢測(cè)故名就是通過射線去檢測(cè)是否和碰撞器產(chǎn)生了交集,和碰撞器與碰撞器發(fā)生交集一樣,如果檢測(cè)到了會(huì)返回一個(gè)真。
    射線的用法很多:比如檢測(cè)是否跳躍,通過向地面投射射線控制在地面時(shí)候可以跳起。
            射擊游戲中可以通過定長(zhǎng)射線去判斷目標(biāo)物體是否被擊中等

    主要用到的工具類有:

    • Physics
    • RaycastHit 光線投射碰撞
    • Ray 射線


    第1種方法:Physics.Linecast 線性投射
    從開始位置到結(jié)束位置做一個(gè)光線投射,如果與碰撞體交互,返回真。

     Debug.DrawLine(transform.position, Line_floor.position, Color.red, 1f);
     bool grounded  = Physics.Linecast(transform.position, Line_floor.position, 1 << LayerMask.NameToLayer("Ground"));
     if (grounded)
     {
         Debug.LogError("發(fā)生了碰撞");   
     }
     else {
         Debug.LogError("碰撞結(jié)束");
     }
    第二種方法在場(chǎng)景中投下可與所有碰撞器碰撞的一條光線。可控制投射方向和投射長(zhǎng)度。
    Vector3 fwd = transform.TransformDirection(-Vector3.up);
    bool grounded =  Physics.Raycast(transform.position,fwd, 10 );
    if (grounded)
     {
       Debug.LogError("發(fā)生了碰撞");   
     }
    else 
    {
        Debug.LogError("碰撞結(jié)束");
     }
    第三種方法:在場(chǎng)景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的細(xì)節(jié)信息。



    RaycastHit hit;
    bool grounded = Physics.Raycast(transform.position, -Vector3.up, out hit);
    // 可控制投射距離bool grounded = Physics.Raycast(transform.position, -Vector3.up, out hit,100.0);
    if (grounded)
    {
    Debug.LogError("發(fā)生了碰撞");
    Debug.LogError("距離是:" + hit.distance);
    Debug.LogError("被碰撞的物體是:" + hit.collider.gameObject.name);
    }
    else {
    Debug.LogError("碰撞結(jié)束");
    }
    
    注意:這里返回的碰撞器的信息是依次的,先返回第一個(gè)碰撞的,第一個(gè)碰撞結(jié)束后才返回第二個(gè)。


    第四種方法:Physics.RaycastAll 所有光線投射。

    投射一條光線并返回所有碰撞,也就是投射光線并返回一個(gè)RaycastHit[]結(jié)構(gòu)體。


    RaycastHit[] hits;
    hits = Physics.RaycastAll(transform.position, -Vector3.up, 100.0F);
    int i = 0;
    while (i < hits.Length)
    {
    Debug.LogError("發(fā)生了碰撞");
    RaycastHit hit = hits[i];
    Debug.LogError("被碰撞的物體是:" + hit.collider.gameObject.name);
    i++;
    }


    第五種方法:控制碰撞的層,可以設(shè)置射線的長(zhǎng)度,并且用debug查看射線的長(zhǎng)度。

    使用層的時(shí)候,要注意,要給別的對(duì)象也附上層的名字,不能用缺省,會(huì)出問題。


    RaycastHit hit;
    // Debug.DrawLine()
    bool grounded = Physics.Raycast(transform.position, transform.up, out hit, 10000f, 1 << LayerMask.NameToLayer("Diren"));
    Debug.DrawRay(transform.position, transform.up * 10000f, Color.red);
    if (grounded)
    {
    Debug.LogError("發(fā)生了碰撞");
    Debug.LogError("距離是:" + hit.distance);
    Debug.LogError("被碰撞的物體是:" + hit.collider.gameObject.name);
    
    }
    else {
    Debug.LogError("碰撞結(jié)束");
    }
    第五種:Physics.OverlapSphere 相交球。
    返回球型半徑之內(nèi)(包括半徑)的所有碰撞體 collider[]。可用于拾取物品用。此方法在VR交互時(shí)為了提高用戶體驗(yàn),使用較多。
    Collider[] col =  Physics.OverlapSphere(transform.position,1f, 1 << LayerMask.NameToLayer("zhuangbei"));
    if (col.Length > 0)
    {
    foreach (Collider zhuangbei in col)
    {
      zhuangbei.gameObject.GetComponent().material.color = Color.red;
    }
    }




    主站蜘蛛池模板: 中文字幕日产无码 | 久久精品一区二区三区视频 | 清纯唯美激情亚洲 | 国产片毛片 | 日本欧美一级aaaaa毛片 | 黄色大片免费观看 | 欧美日韩婷婷 | 6080YYY午夜理论片 | 亚洲久操 | 免费播放片 | 在线 国产 亚洲 欧美 | 午夜精品久久久久99热app | 性欧美精品中出 | 99精品国产自在现线10页 | 国产人与zoxxxx另类小说 | 亚洲精品久久嫩草网站秘色 | 天天舔天天干天天操 | 婷婷五月色综合香五月 | 免费在线看片 | 大胸美女黄漫扒衣服 | 一区二区三区日本久久久 | 欧美高清视频手机在在线 | www.日本在线视频 | 精品人妻无码一区二区三区四川人 | 黑人极品巨大videoshd的优点 | 91偷自产一区二区三区精品 | 女人怀孕一级毛片 | 亚洲一区二区电影在线观看 | 小明成人永久免费视频在线观看 | 人成网站在线观看 | 日本不卡二区 | 特级毛片网 | 直接观看黄网站免费视频 | 欢乐好声音1国语版免费观看 | 亚洲成人免费电影在线 | 毛片黄色一级 | 温暖的抱抱免费观看 | 18禁超污无遮挡无码免费应用 | 国产情侣久久 | 国产一区二区三区视频播放 | 男人的天堂日本 |