<cite id="69pgq"></cite>
  • <rt id="69pgq"><table id="69pgq"></table></rt>

  • <rt id="69pgq"><meter id="69pgq"><p id="69pgq"></p></meter></rt>
    <source id="69pgq"><meter id="69pgq"><button id="69pgq"></button></meter></source>
  • <s id="69pgq"><div id="69pgq"><thead id="69pgq"></thead></div></s>
  • <source id="69pgq"><nav id="69pgq"><strike id="69pgq"></strike></nav></source>
    <rt id="69pgq"><meter id="69pgq"></meter></rt>
  • 當前位置: 移動互聯網學院 > VR開發 > Ray射線類
    Ray射線類 時間:2017-07-24     來源:移動互聯網學院

    一個射線是一條從原點(origin)向指定方向(direction)無限延長的直線,在射線發射的軌跡中,可以用于檢測所碰撞到的其他物體。

    射線可以應用在多方面,例如射擊游戲中的子彈、Dota類游戲的人物角色控制、移動VR的交互功能等等

    Ray是一個結構體(Struct),下面將對Ray射線類相關的方法和屬性進行講解。

    1.構造函數

    public Ray(Vector3 origin, Vector3 direction);

    參數介紹:origin:射線起點;direction:射線終點;

    一般是采用從攝像機發出射線的方式創建一條射線,如從攝像機發射一條穿過屏幕中心的射線:

    Ray ray = Camera.main.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2));

    2.發射射線

    Physics.Raycast(),API文檔中給出這幾個方法:

    public static bool Raycast(Ray ray, RaycastHit hitInfo, float distance, int layerMask);

    public static bool Raycast(Ray ray, float distance, int layerMask);

    public static bool Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask);

    public static bool Raycast(Vector3 origin, Vector3 direction, RaycastHit , float distance ,int layerMask );

    參數 說明

    ray 要發射的射線

    hitInfo 返回射線路徑中碰撞體的信息

    distance 射線發射的距離

    layerMask 射線碰撞檢測的層

    3.layerMask參數

    int型的變量,用于區分不同層的游戲對象,可以通過以下方法返回Layers對應的整數:

    targetMask = LayerMask.GetMask("cube"); 



           

    4.RaycastHit類

    通過transform參數,就可以控制碰撞體的移動、旋轉、伸縮比例,還可以獲得碰撞體游戲對象,如:hit.transform.gameObject。

    獲得游戲對象實例,就可以獲得具體碰撞體游戲對象的名稱:hit.transform.gameObject.name。

    5.例子

    從攝像機發射一條穿過鼠標在屏幕位置的射線,當“cube”層的游戲對象碰撞到射線,對碰撞體進行平移:



          

           

    26uuu久久天堂在线