我从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
答案 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!");
}