Unity3D如何检查与标记为“标签”的对象的碰撞

Posted

技术标签:

【中文标题】Unity3D如何检查与标记为“标签”的对象的碰撞【英文标题】:Unity3D how to check Collision with Objects tagged "tag" 【发布时间】:2022-01-21 01:38:27 【问题描述】:

目前,我正在使用 Random GameObject Spawner 编写游戏。我要解决的问题是我使用Physics.Checksphere 来实例化对象,只有当我想要的半径周围的这个点没有对象时。

这是我的实现代码:

  

if(!Physics.CheckSphere(pos, spawnCollisionCheckRadius))                //Check Radius at pos
       
           GameObject actStone = stones[Random.Range(0, stones.Count)]; //Get Random Stone Object from List
           Instantiate(actStone, pos, rot);                             //Spawn Stone
       

所以我实际遇到的问题是,当我有一个球体对撞机时,我的 Physics.CheckSphere 代码不起作用,因为它会检查石头周围这个球体中的任何碰撞,并且每次它与我的星球发生碰撞时。但我需要一个环绕我的星球的对撞机。我怎样才能只为我检查带有“石头”标签的碰撞,而不是这个半径中的所有碰撞。我的想法可能是以某种方式使用Physics.OverlapSphere,但我实际上不知道如何实现它。感谢您的帮助,我希望将来我也可以帮助解决这个问题!

【问题讨论】:

函数中有一个 layerMask 参数。您可以使用图层来忽略某些碰撞。检查docs 【参考方案1】:

Physics.CheckSphere 函数还有第三个参数,称为layerMask。您可以指定它以选择性地忽略碰撞器。

【讨论】:

以上是关于Unity3D如何检查与标记为“标签”的对象的碰撞的主要内容,如果未能解决你的问题,请参考以下文章

玩家在与标记对象碰撞时消失

Unity3d碰撞检测中碰撞器与触发器的区别

Unity3D使用时发现的问题及解决方法(触发碰撞条件)

转载 unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger)

如何检查我的播放器是否与对象发生碰撞?

Unity3d -- Collider(碰撞器与触发器)