Unity3d如果触发器的语句不能按预期工作

时间:2016-03-13 22:19:50

标签: c# unity3d

我正在制作一个3D游戏,我想为每个触发式磁贴添加一个计数器,我以2d自上而下的方式走过去。示例gameObject名称是trigger1,我在我的播放器上有这个触发器脚本,当他走到触发器时它设置2个int(int1,int2)int 1是计数器而int2只是一个标志所以我知道我站在trigger1上瓦。脚本的工作方式现在几乎每次我从一个触发器走到下一个触发器时都会重置计数器,即使触发器直接相邻,我的播放器足够宽,不能完全离开触发区域。我试图找出if语句,如果与trigger1 int2 = 1发生冲突,并且当我没有触及触发器1 int2 = 0.那么当int2 = 0时,重置计数器返回0

示例代码

using UnityEngine;
using System.Collections;

public class TriggerScript : MonoBehaviour 
{
    public int in1 = 0;
    public int int2 = 0;
    void Start()
    {
        Debug.Log (int1);
    }

    void OnTriggerEnter (Collider trigger1)
    {
        int1++;
        Debug.Log ("trigger1 Enter");
        Debug.Log (int1);
    }

    void OnTriggerStay (Collider trigger1)
    {
        int2 = 1;
        Debug.Log ("trigger1 Stay");
    }

    void OnTriggerExit (Collider trigger1)
    {
        if (collider.gameObject.tag == "trigger1") {
            Debug.Log ("int2 = 1");
        } else {
            int2 = 0;
            Debug.Log ("int2 = 0");
        }
    }

    void Update (){
        if (int2 == 0)
            int1 = 0;
    }


}

1 个答案:

答案 0 :(得分:0)

将我的评论写入代码:

ast.addNode(someNodeObjectByValue);