Unity - 使用不同的"标记确定项目冲突"

时间:2018-06-05 12:52:24

标签: c# unity3d

Three different colored blocks colliding with three other different colored blocks

我从Unity2D开始。我有三个不同颜色的块(图中的三个下块)以恒定的力量上升。每个下部块由" Red"," Blue"和" Yellow"的标签标记。上部块也用各自的颜色标记。

此外,每个对象都附加了isTrigger boxcollider2D。如果两种不同的颜色相互碰撞,我想Debug.Log像#34; Game Over"这样的消息。

我知道我需要以某种身份使用OnTriggerEnter2D,但我不知道如何使用void OnTriggerEnter2D(Collider2D col) { if (col.tag != "Red") { Debug.Log("Game Over"); } if (col.tag != "Blue") { Debug.Log("Game Over"); } if (col.tag != "Yellow") { Debug.Log("Game Over"); } } 。任何帮助将不胜感激!

[编辑]目前这就是我所拥有的(并且它没有按照我想要的方式工作)。

createESA

2 个答案:

答案 0 :(得分:0)

你在放。 !在if语句上标记。这意味着如果标签不相等。如果您不按照自己想要的方式说出自己的意思,那会有所帮助。如果不相等就是你想要的那么我没有看到问题,它必须在你的代码中的其他地方。

答案 1 :(得分:0)

每次调用OnTriggerEnter2D时,您的gameObject都会与另一个碰撞器发生碰撞。其中一个碰撞的游戏对象需要一个rigidbody2D,否则就不会调用OnTriggerEnter2D。

我假设你遇到了if语句的逻辑而不是OnTriggerEnter2D的调用问题,如果碰撞游戏对象的标签不一样,你想调用“Game Over Function”。

所以你想要比较两个碰撞游戏对象的标签,而不是一个碰撞对象的标签与其他一些标签。

private void OnTriggerEnter2D(Collider2D col)
{
    if (col.CompareTag(gameObject.tag) == false)
        Debug.Log("This is NOT the same Color!");
    else
        Debug.Log("This is the same Color!");
}