欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Unity C# OnTriggerEnter()理解

程序员文章站 2024-03-18 19:59:04
...

网上看了不少文档,但是实在是看不太明白,所以就索性花了一个晚上,终于算是弄明白了OnTriggerEnter()函数。自认为我理解的没错,如果有错误的地方,还烦请指正。

举例说明:
Unity C# OnTriggerEnter()理解
ColliderTest.cs代码:

    void OnTriggerEnter(Collider myCollision) 
    {
        if (myCollision.gameObject.tag == "Player") 
        {
            Destroy(gameObject);
            Debug.Log("Collision happened!");
        }
    }

OnTriggerEnter()其实就是当其他的gameObject(蓝色cube Player)进入到自身gameObject(红色cube Powerup, 拥有代码ColliderTest.cs作为compenent,暂且看作“自身gameObject")的时候需要执行的操作。
括号中的(Collider myCollision)参数指的是其他的gameObject,也就是例中的蓝色cube Player。所以if语句中的条件语句myCollision.gameObject.tag也就是指的Player的tag是否为”Player“。因此Destroy(gameObject)语句消灭的是红色的Powerup(因为代码作用在红色的Powerup,也就是自身gameObject), 而Destroy(myCollision.gameObject)消灭的是蓝色的Player。

关于哪个物体应该添加Rigidbody和勾选isTrigger,我测试了一下,无所谓,在哪个物体上都一样。按照官网说明,两个碰撞的物体都要有Collider Component,其中一个必须有Rigidbody和勾选isTrigger.如果两个均没有Rigidbody或两个同时勾选isTrigger,则不会发生碰撞。

Note: Both GameObjects must contain a Collider component. One must have Collider.isTrigger enabled, and contain a Rigidbody. If both GameObjects have Collider.isTrigger enabled, no collision happens. The same applies when both GameObjects do not have a Rigidbody component.

相关标签: unity c#