unity3d 如何在聚光灯照射到球员时检测团结的球员

l2osamch  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(158)

我正在做一个游戏,我添加了一个在x轴上不断旋转的聚光灯,我希望当光线照射到玩家时,光线能够检测到我的玩家
我试过光线投射,但它只是一条线,所以没有准确性

8xiog9wr

8xiog9wr1#

可以使用圆锥体网格

  • 〉将其用作MeshCollider触发器中的网格,而不使用任何网格渲染器
  • 〉现在你基本上有一个不可见的碰撞器对象,它是一个触发器,所以其他对象仍然可以通过它而不实际碰撞
  • 〉然而,现在你可以简单地检查碰撞重叠使用例如。
private void OnTriggerEnter(Collider other)
{
    if(other.TryGetComponent<Player>(out var player)
    {
        Debug.Log("Hey {player}, I see you!");
    }
}

这将是你的预过滤器检查是否需要任何进一步的工作在所有-如果没有球员在所有在这个触发器,那么没有什么进一步检查无论如何。
然后进一步的检查可以例如还包括检查是否存在多个命中对象,如果只有玩家在那里,则也没有其他事情要做,因为你知道你已经看到了玩家。如果墙对象比玩家更近,则如果你可能看到玩家的任何边缘,则你可以进行进一步的光线投射检查等
例如,对于玩家,在玩家的每个边缘进行光线投射,并检查其中一个是否击中了玩家而不是墙壁

相关问题