如何通过相互触摸来检测物体

时间:2019-05-22 22:03:02

标签: c# unity3d

我需要能够检测是否有2个单独的物体相互接触。我不知道是否有一段特定的代码可以做到这一点。

所以我编写了一些代码来检测代码所附加的对象是否在触摸某物,但是我不知道如何检测是否有2个具有不同标签的对象在触摸


void OnCollisionEnter(Collision other)
    {
        if (other.gameObject.tag == "Rocket")
        {
            istouchingrocket = true;
        }

        if (other.gameObject.tag == "Ground3")
        {
            Isend = true;   //Ground three is the ending platform. This piece of code is attached to oil which is not touching this. I need to detect if the player is touching "Ground3".
        }
    }

    void OnCollisionExit(Collision other)
    {
        if (other.gameObject.tag == "Rocket")
        {
            istouchingrocket = false;
        }
    }


因此代码附在机油上,当玩家触摸“ ground3”时,他们便具有销毁机油的能力。该代码需要远程检测是否有2个单独的物体在触摸。

2 个答案:

答案 0 :(得分:0)

对于玩家脚本来说,最好有一个字段来跟踪它是否具有销毁石油的能力:

public bool canDestroyOil;

确保在false中将其设置为Start()

canDestroyOil=false;

然后,当玩家检测到是否触摸到“ ground3”,然后将其设置为true

canDestroyOil = true;

然后在加油脚本中,当它碰到玩家时,如果玩家可以消灭油脂,它就会自我毁灭:

if (player.canDestroyOil) {
    gameObject.Destroy();
}

答案 1 :(得分:0)

看看IsTouching()函数。

它完全符合您的要求。