C# 确定某个区域内是否有任何游戏对象的最佳方法是什么

C# 确定某个区域内是否有任何游戏对象的最佳方法是什么,c#,unity3d,C#,Unity3d,我正在做一个游戏,我知道我想在其中嵌入手榴弹。在手榴弹爆炸之前,找到一定半径内所有游戏物体的最佳方法是什么?我已经看到一种方法是让所有敌人/对手都在一个阵列中,然后在阵列中循环,看看有多少人会在某个区域内,但我想知道是否有更好的方法来实现这一点 编辑: 你好,如果你看到这个,请把这个问题投上去,因为某种原因,我因为一个很好的问题而被禁止,这个问题只得到1-。(最有可能是因为这是我的第一个问题,所以我的帐户很容易被禁止)它最初说这只是一天的禁令,但显然不是因为已经两天了……如果所有要检测的对象都连

我正在做一个游戏,我知道我想在其中嵌入手榴弹。在手榴弹爆炸之前,找到一定半径内所有游戏物体的最佳方法是什么?我已经看到一种方法是让所有敌人/对手都在一个阵列中,然后在阵列中循环,看看有多少人会在某个区域内,但我想知道是否有更好的方法来实现这一点

编辑:


你好,如果你看到这个,请把这个问题投上去,因为某种原因,我因为一个很好的问题而被禁止,这个问题只得到1-。(最有可能是因为这是我的第一个问题,所以我的帐户很容易被禁止)它最初说这只是一天的禁令,但显然不是因为已经两天了……

如果所有要检测的对象都连接了碰撞器,您可以使用。只需为其提供一个位置和半径,即可检索球形区域内的所有碰撞器:

Collider[] hitColliders = Physics.OverlapSphere(grenadePosition, explosionRadius);

然后你可以在它们之间循环并根据需要施加伤害。希望这有帮助!如果您有任何问题,请告诉我。

如果您要检测的所有对象都连接了碰撞器,您可以使用。只需为其提供一个位置和半径,即可检索球形区域内的所有碰撞器:

Collider[] hitColliders = Physics.OverlapSphere(grenadePosition, explosionRadius);

然后你可以在它们之间循环并根据需要施加伤害。希望这有帮助!如果您有任何问题,请告诉我。

我认为最好的方法是,正如您所说的,将对象放入数组中。
我会为敌人设置“敌人”标签,然后遍历所有标记为“敌人”的游戏对象


我认为最好的方法是,正如您已经说过的,将对象放入数组中。
我会为敌人设置“敌人”标签,然后遍历所有标记为“敌人”的游戏对象


如果所有相关对象都有碰撞器,您可以使用检索它们。但如果它们没有与手榴弹的长方体碰撞器重叠怎么办?Serlite这不是
Overlapphere()
的工作方式-您指定一个位置(可能是您的手榴弹所在的位置)和半径,它会检查该球形区域内的所有碰撞器。很高兴提供帮助!我已将所有信息整合到一个正确的答案中-如果您对它感到满意,您可以通过单击旁边的复选标记接受它,您的问题将被标记为已解决。(顺便说一句,欢迎使用堆栈溢出。)如果所有相关对象都有碰撞器,您可以使用检索它们。但是如果它们没有与手榴弹的长方体碰撞器重叠呢?Serlite这不是
Overlapphere()
的工作方式-您指定一个位置(可能是您的手榴弹所在的位置)和半径,它会检查该球形区域内的所有碰撞器。很高兴提供帮助!我已将所有信息整合到一个正确的答案中-如果您对它感到满意,您可以通过单击旁边的复选标记接受它,您的问题将被标记为已解决。(顺便说一句,欢迎使用堆栈溢出。)这比我的方法要好得多。。。直到我不得不在自己的游戏中使用它并搜索一个特定的函数来实现这一点,我才知道这一点。最后使用了Physics.Overlapphere函数。这比我的方法好得多。。。直到我不得不在自己的游戏中使用它并搜索一个特定的函数来实现这一点,我才知道这一点。最终使用了Physical.Overlapphere函数。