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

Get all hit objects between two moving points?

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

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

注意:此事件可以通过任何渲染这些对象的相机触发,因此请注意您使用哪个相机渲染树木是正确的

虽然 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);

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