Unity中htc vive物理射线检测碰撞的方法—Phsics.Raycast()
发表于2018-05-07
给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 }); } }