溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity Physics.Raycast 射線投射

發(fā)布時間:2020-07-10 05:22:38 來源:網絡 閱讀:3174 作者:海灬未眠 欄目:開發(fā)技術



   bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask)


    當光線投射與任何碰撞器交叉時為真,否則為假。

   

   bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float 


    distance, int layerMask)


    在場景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的細節(jié)信息()。


    bool Physics.Raycast(Ray ray, float distance, int layerMask)


    當光線投射與任何碰撞器交叉時為真,否則為假。

                      

   bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit,float 


   distance, int layerMask)


    當光線投射與任何碰撞器交叉時為真,否則為假。




    注意:如果從一個球型體的內部到外部用光線投射,返回為假。


    參數(shù)理解:


    origin : 在世界坐標中射線的起始點


    direction: 射線的方向


    distance: 射線的長度


    hit: 使用c#中out關鍵字傳入一個空的碰撞信息類,然后碰撞后賦值??梢缘玫脚鲎参矬w的  


      transform,rigidbody,point等信息。 


    layerMask: 只選定Layermask層內的碰撞器,其它層內碰撞器忽略。 選擇性的碰撞


   


   RaycastHit[] RaycastAll(Ray ray, float distance, int layerMask)


   投射一條光線并返回所有碰撞,也就是投射光線并返回一個RaycastHit[]結構體。


 

   下面一個利用射線做的拾取的小例子(將代碼直接拖拽到主相機上)

using UnityEngine;
using System.Collections;

public class RayTest : MonoBehaviour {

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () 
    {
        if(Input.GetMouseButton(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//從攝像機發(fā)出到點擊坐標的射線
            RaycastHit hitInfo;
            if(Physics.Raycast(ray,out hitInfo))
            {
                Debug.DrawLine(ray.origin,hitInfo.point);//劃出射線,只有在scene視圖中才能看到
                GameObject gameObj = hitInfo.collider.gameObject;
                Debug.Log("click object name is " + gameObj.name);
                if(gameObj.tag == "boot")//當射線碰撞目標為boot類型的物品 ,執(zhí)行拾取操作
                {
                    Debug.Log("pick up!");
                }
            }
        }
    }
}


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI