获取两个移动点之间的所有命中对象?

时间:2017-05-27 11:07:11

标签: unity3d raycasting

我想在玩家和相机之间设置透明的所有树,我的游戏自上而下,相机和玩家之间的矢量发生变化。那么,如何在两点之间进行Raycast并获得被光线击中的所有对象?我知道有两个点之间的光线投射Linecast,但它只返回第一个对象,而另一方面RaycastAll只能在特定方向投射...任何想法如何在玩家和相机之间投射光线并获得所有命中对象?

2 个答案:

答案 0 :(得分:1)

虽然Physics.RaycastAll()似乎无法立即满足您的需求,但您可以轻松地对其进行调整以满足您的需求。

如果您在相机方向上从播放器执行光线投射,并将其限制为仅限播放器与相机之间的距离,那么您实际上只会在两个位置之间投射光线,并且只能在它们之间获取物体

以下是我建议您接近它的方法:

float distToCamera = Vector3.Distance(camera.transform.position, player.transform.position);
Vector3 dirToCamera = camera.transform.position - player.transform.position;

RaycastHit[] hits;
hits = Physics.RaycastAll(player.transform.position, dirToCamera, distToCamera);

希望这有帮助!如果您有任何问题,请告诉我。

答案 1 :(得分:0)

快速搜索并查看this并在树上使用它,当它们对相机可见时,然后用对象做你想做的事情

注意:任何渲染这些物体的相机都会触发此事件,因此请注意您用于渲染树木的相机是正确的