Unity中htc vive物理射线检测碰撞的方法—Phsics.Raycast()

发表于2018-05-07
评论0 3.2k浏览
给HTC vive做物理射线检测碰撞时,使用了Physics.Raycast去获取碰撞物,做碰撞检测即可,

直接上代码:
//物理射线检测碰撞物的方法  
/*继承关系  IRaycastMethod<--BaseRaycastMethod<--PhysicsRaycastMethod 
重写Raycast(Ray ray, float distance, list<RaycastResult> raycastResults)  :  void  
ray  带有开始点和方向的射线   
distance  允许射线投射的最大距离 
RaycasterResult 存储碰撞的对象  
*/  
public override void Raycast(Ray ray, float distance, List<RaycastResult> raycastResults)  
{  
    var hitCount = Physics.RaycastNonAlloc(ray, hits, distance, RaycastMask); // 返回碰撞的个数 并将碰撞的物体存储在RaycasterHit数据中  
    for (int i = 0; i < hitCount; ++i)  
    {  
        raycastResults.Add(new RaycastResult  
        {   // 为RaycasterResult的字段属性赋值  
            gameObject = hits[i].collider.gameObject,  
            module = raycaster,  
            distance = hits[i].distance,  
            worldPosition = hits[i].point,  
            worldNormal = hits[i].normal,  
            screenPosition = Pointer3DInputModule.ScreenCenterPoint,  
            index = raycastResults.Count,  
            sortingLayer = 0,   // 物理碰撞检测的sortingLayer和sortingOrder为0  
            sortingOrder = 0  
        });  
    }  
} 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引