有时候为了能够看到距离摄像机比较近的内容,经常会把Camera的近剪切平面的距离设置的很小,这对渲染的画面可能不会产生什么大的影响,但是对于某些基于摄像机的计算可能产生很大的影响,比如下面这种情况:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
这个方法计算的精度居然与Camera.main的近剪切平面的距离有很大关系,如果Camera.main的近剪切平面的距离设置太小,会导致射线精度很低,直观上的感觉就是点击场景内的物体点不准。但是有时候我们确实希望近剪切平面的距离小一点儿,目前想到的办法是给Camera.main添加一个子摄像机,这个子摄像机的近剪切平面的距离可以设置得大一点儿,同时保持和Camera.main重叠,但是这个子摄像机的GameObject直接关闭,这样这个子摄像机就不渲染了,然后射线使用这个子摄像机的方法生成,假如这个子摄像机的引用叫camRay,那么写成这样就可以了:
Ray ray = camRay.ScreenPointToRay(Input.mousePosition);