<dl id="1pdzy"></dl>

    1. <li id="1pdzy"></li>

    2. 当前位置: 移动互联网学院 > VR开发 > Ray射线类
      Ray射线类 时间£º2017-07-24     来源£º移动互联网学院

      一个射线是一条从原点£¨origin£©向指定方向(direction)无限延长的直线£¬在射线发射的轨迹中£¬可以用于检测所碰撞到的其他物体¡£

      射线可以应用在多方面£¬例如射击游戏中的子弹¡¢Dota类游戏的人物角色控制¡¢移动VR的交互功能等等

      Ray是一个结构体£¨Struct£©£¬下面将对Ray射线类相关的方法和属性进?#34218;?#35299;¡£

      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”层的游戏对象碰撞到射线£¬对碰撞体进行平移£º



            

             

      ¹Ù·½²ÊƱÓÐÄÄЩ

        <dl id="1pdzy"></dl>

        1. <li id="1pdzy"></li>

            <dl id="1pdzy"></dl>

            1. <li id="1pdzy"></li>