使 2D 对撞机仅命中特定的 2D 对撞机而不使用碰撞层遮罩

问题描述 投票:0回答:1

在我的2D游戏中,有一些随机放置的圆圈和一些球。

每个球都有一个圆圈的参考,这个圆圈将施加一个力将球拉到它的中心。

但是,球可以改变它们的圆圈。当他们这样做时,他们会从当前圈子飞到新圈子。

我的问题是:如何让小球只和属于同一个圆的小球碰撞?在球改变圆圈的那一刻,我希望它忽略与所有其他球的碰撞,除了那些属于同一个新圆圈的球。


因为我可以有很多圈子,我不认为使用碰撞层可以完成这项工作,所以有没有更好的方法?

c# unity3d 2d collision-detection
1个回答
0
投票

您可以通过

Physics2D.IgnoreCollision
并将您的球存放在单独的集合中。

然后

  • 最初通过它们一次并让它们忽略所有其他碰撞器
  • 然后每次进入一个圆圈时,你都会穿过属于该圆圈的球,并将
    IgnoreCollision
    设置为
    false
    对于那些。
  • 一旦你离开一个圆圈,你就把它们全部放回
    true
© www.soinside.com 2019 - 2024. All rights reserved.