【问题标题】:OnTriggerEnter called but variable is never setOnTriggerEnter 已调用,但从未设置变量
【发布时间】:2015-10-19 09:40:45
【问题描述】:

我已经开始慢慢地使用 C# 学习 Unity,到目前为止它一直很受欢迎!

我遇到了一个小问题(我希望这是一个小问题)并且被卡住了,从那以后我一直在质疑我的理智。

在我首先运行的主脚本中,我的代码可以动态生成一个基元(球体)并将脚本附加到它,脚本会检查球体是否已被触发。

主脚本

bool createNav (Vector3 _start) {

        GameObject nav = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        nav.AddComponent<NavTrigger>();

        nav.collider.isTrigger = true;

        nav.transform.localScale = new Vector3(1f,1f,1f);
        nav.transform.position = _start;

        return nav.GetComponent<NavTrigger>().Triggered;
    }

我的其他脚本

private bool triggered = false;

    void OnTriggerEnter() {

        this.triggered = true;
    }

    public bool Triggered {

        get { return this.triggered; }
    }

遗憾的是,无论它运行 OnTriggerEnter 代码,它仍然返回 false。

如果有人有任何想法或建议,请告诉我,我会尝试做任何事情来完成这项工作。

非常感谢您的帮助! :)

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    OnTriggerEnter 需要一个参数(其他碰撞器),否则它将与 Unity 期望的签名不匹配。

    private bool triggered = false;
    
        void OnTriggerEnter(Collider other) {
            Debug.Log("Triggered");
            this.triggered = true;
        }
    
        public bool Triggered {
    
            get { return this.triggered; }
        }
    }
    

    此外,正如文档所述:

    请注意,仅当其中一个对撞机也同时发送时才会发送触发事件 有一个刚体。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多