//物理射线检测碰撞物的方法
/*继承关系 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
});
}
}
unity中htc vive物理射线检测碰撞的方法—Phsics.Raycast()
最新推荐文章于 2024-06-16 17:14:27 发布