OnTriggerEnter不在Unity3D上工作

时间:2016-03-11 10:16:51

标签: c# unity3d

我试图在篮球比赛中发现一个球进入投球圈。我在环上使用以下脚本

public class Anotar : MonoBehaviour {

    private ControlJuego control;

    void Start(){
        GameObject gameControllerObject = GameObject.FindWithTag ("ControlJuego");
        if (gameControllerObject != null)
        {
            control = gameControllerObject.GetComponent <ControlJuego>();
        }
        if (control == null)
        {
            Debug.Log ("Cannot find 'GameController' script");
        }
    }

    void OnTriggerEnter (Collision col)
    {
        control.puntuar (2);
    }

    void OnCollisionEnter (Collision col)
    {
        //control.puntuar (3);
    }
}

该环将盒式对撞机设置为触发器以检测OnTriggerEnter方法。它还有一个网格对撞机,用于检测球触碰它时是否会抛出OnCollisionEnter。我的问题是OnTriggerEnter无法正常工作(在内部使用断点并且它不会停止)。实际上OnCollisionEnter工作正常。我的球有一个球体对撞机,都使用刚体。有什么想法吗?

编辑:我附上了我的球和戒指的截图 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:2)

你应该在篮球上添加运动刚体。静态触发器可以检测刚体,但即使触发器具有刚体,它也不会检测到移动的碰撞器。

答案 1 :(得分:2)

void OnTriggerEnter (Collision col)
{
    control.puntuar (2);
}

这将永远不会奏效。 OnTriggerEnter需要一个Collider而不是Collision。 试试这个:

void OnTriggerEnter (Collider col)
{
    control.puntuar (2);
}

答案 2 :(得分:0)

我遇到了同样的问题,我试图用箭射击敌人,但是一开始没有调用箭头OnTriggerEnter(Collider collider),我启用了“触发”敌人(我要尝试的身体)调用该方法)终于解决了我的问题。