Disable or enable collisions based on object tag U

2020-02-14 04:23发布

I want to disable or enable collision with object in unity 2d game based on its tag. Lets say I have object with tag "foo1" and objects with tag "foo2". If user choose to collide with objects "foo1" then it should not collide with objects "foo2".

How could I achieve this? I tried this:

 void OnCollisionEnter(Object other)
 {
      if (other.tag == "foo1")
          collider.enabled = false;
 }

But this is not working for two reasons. First object has to have isTrigger set to true (this could not be set for objects that serves as ground) and if I disable entire collider then object will fall through ground.

I am new to unity and I will study it in more details but I am asking for quick help and maybe idea how to do this?

标签: unity3d
1条回答
淡お忘
2楼-- · 2020-02-14 04:26

Instead of doing this via tags, you might want to have a look at layers.

By assigning different objects to different layers, you can set them to either collide with each other, or ignore any potential collisions. You can achieve this at

Edit->Project Settings->Physics

where you can edit the layer collision matrix, to enable or disable collisions between layer elements.

查看更多
登录 后发表回答