2

Unity を C# を使ってゆっくりと学習し始めましたが、これまでのところとても楽しかったです!

私は小さな問題に遭遇し (小さな問題であることを願っています)、立ち往生してしまい、それ以来、私の正気を疑っています。

最初に実行されるメイン スクリプトには、オンザフライでプリミティブ (球体) を生成し、スクリプトをアタッチするコードがあります。スクリプトは、球体がトリガーされたかどうかを確認します。

メインスクリプト

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 を返します。

誰かに何かアイデアや提案があれば、私はこの仕事をするために何でもしようとします.

ご助力ありがとうございます!:)

4

1 に答える 1

2

OnTriggerEnterにはパラメーター (Collider other) が必要です。そうしないと、Unity が期待する署名と一致しません。

private bool triggered = false;

    void OnTriggerEnter(Collider other) {
        Debug.Log("Triggered");
        this.triggered = true;
    }

    public bool Triggered {

        get { return this.triggered; }
    }
}

また、ドキュメントに記載されているように:

トリガー イベントは、コライダーの 1 つにも剛体がアタッチされている場合にのみ送信されることに注意してください。

于 2012-08-27T07:38:51.540 に答える