1. ホーム
  2. c#

[解決済み】Unity3DでOnTriggerEnterが動作しない件

2022-02-03 09:15:18

質問

バスケットボールの試合で、リングに入ったボールを検知して投げようとしています。リングには次のようなスクリプトを使用しています。

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はうまく動作します。私のボールは球のコライダーを持っていて、両方ともリジッドボディを使用しています。何かアイデアはありますか?

編集:私のボールとリングのスクリーンショットを添付します。

解決方法は?

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

これは決してうまくいきません。OnTriggerEnter は Collision ではなく Collider を必要とします。 これを試してみてください。

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