确定某个区域内是否有任何GameObjects的最佳方法是什么

时间:2016-11-30 21:15:03

标签: c# unity3d

我正在制作一款我知道想要嵌入手榴弹的游戏。什么是在手榴弹爆炸之前在手榴弹的某个半径范围内找到所有游戏物体的最佳方法?我已经看到一种方法是将数组中的所有敌人/对手都放在一起,然后循环遍历数组以查看在某个区域内有多少人,但我想知道是否有更好的方法来解决这个问题。

编辑:

您好,如果您看到这个,请将此问题投票,因为某些原因我被禁止了一个只有1-的好问题。 (很可能是因为这是我的第一个问题,所以我的帐户很容易被禁止)它最初说它只有1天的禁令,但显然不是已经两天了......

2 个答案:

答案 0 :(得分:2)

如果要检测的所有对象都附有碰撞器,则可以使用Physics.OverlapSphere()。只需提供一个位置和一个半径来检索球形区域内的所有碰撞器:

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

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

答案 1 :(得分:2)

我认为,正如您已经说过的那样,解决这个问题的最佳方法是将对象放在数组中 我会设置标签" Enemy"对于敌人,然后循环所有标记为" Enemy"的游戏对象。

foreach(GameObject gameObj in GameObject.FindGameObjectsWithTag("Enemy") {
     // check if the current gameObj is in a certain range of your grenade object
}