团结3d teleport OnCollisionEnter标签不工作

时间:2016-03-20 04:55:08

标签: c# unity3d

我有一些脚本试图使用标签,我认为脚本工作直到我制作我的teleoprter脚本。对撞机部件必须是错误的,但我无法弄清楚标签部件如何或为何不起作用。当调用collider标签时,它会使用on oncollisionenter部分

调用所有脚本

我会告诉你我试过的2个代码 2个标签是“CC”和“门”

void OnTriggerEnter (Collider CC)
{
    if (collider.gameObject.tag == "CC") 
    {
        Debug.Log ("Combat Chance Roll");
        isCombat = false;
        CombatChance = Random.Range (1, 100);
        Probability = 20;

        if (CombatChance <= Probability) {
            isCombat = true;
            isCombat2 = true;
        } else {
            isCombat = false;
            isCombat2 = false;
        }
    }
void OnTriggerEnter (Collider Door)
{
    if (collider.gameObject.tag == "Door") 
    {
        transform.position = new Vector3 (0.0f, 0.51f, -17.0f);
    }
}

这些是两个独立的脚本,都在播放器上,寻找对撞机标签

所以当我打开门时我会传送并检查CombatChanceRoll 我只想打电话给门而不是两个。反之亦然

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~

我必须工作的代码,但不确定是否有更好的方法

void OnTriggerEnter (Collider CC)
{
    switch (CC.tag) 
    {
        case "CC":
        Debug.Log ("Combat Chance Roll");
        isCombat = false;
        CombatChance = Random.Range (1, 100);
        Probability = 20;

        if (CombatChance <= Probability) {
            isCombat = true;
            isCombat2 = true;
        } else {
            isCombat = false;
            isCombat2 = false;
        }
        break;
    }

1 个答案:

答案 0 :(得分:1)

if语句更改为switch语句将解决您的问题。我只是仔细看看你的代码,我发现代码中有两个错误。

更改if (collider.gameObject.tag == "CC")

if (CC.gameObject.tag == "CC") 

然后更改(collider.gameObject.tag == "Door")

if (Door.gameObject.tag == "Door") 

所以你的最终代码应如下所示:

void OnTriggerEnter (Collider CC)
{
    if (CC.gameObject.tag == "CC") 
    {
        Debug.Log ("Combat Chance Roll");
        isCombat = false;
        CombatChance = Random.Range (1, 100);
        Probability = 20;

        if (CombatChance <= Probability) {
            isCombat = true;
            isCombat2 = true;
        } else {
            isCombat = false;
            isCombat2 = false;
        }
    }

AND

void OnTriggerEnter (Collider Door)
{
    if (Door.gameObject.tag == "Door") 
    {
        transform.position = new Vector3 (0.0f, 0.51f, -17.0f);
    }
}

同样避免将代码与==开关语句进行比较。请改用CompareTag功能。例如,if (CC.gameObject.CompareTag("CC"))if (Door.gameObject.CompareTag("Door"))