18

メッシュ コライダーを持つオブジェクトと球コライダーを持つプレハブがあります。2 つが衝突した場合、プレハブのインスタンスが破棄されるようにします。

スクリプトに次のように書きました。

private void OnCollisionEnter(Collision c)
{
    if (c == target)
        Destroy(transform.gameObject);
    print("something");                   // Doesn't get printed
}

しかし、それは機能していません。isTrigger両方のオブジェクトを切り替えてみました。

4

5 に答える 5

7

そのうちの 1 つに非キネマティック Rigidbody がアタッチされていることを確認してください。Unity ドキュメントから取得:

2 つの Collider 間で衝突が発生し、それらの少なくとも 1 つに Rigidbody がアタッチされている場合、それらにアタッチされているオブジェクトに 3 つの衝突メッセージが送信されます。これらのイベントはスクリプトで処理でき、組み込みの NVIDIA PhysX エンジンを使用するかどうかに関係なく、独自の動作を作成できます。

ここから: Unity3D MeshCollider

于 2013-08-16T20:51:57.370 に答える
2

OnTriggerEnter() メソッドを使用して、オブジェクトのコライダーをトリガーに設定してみましたか?

どのオブジェクトと衝突するかを伝える必要がない場合は、簡単に行うことができます

void OnTriggerEnter(){
    Destroy(transform.gameObject);
}

編集:

また、私はこのようにOnCollisionを行いました

private string hitobject;

void OnCollisionEnter(UnityEngine.Collision hit)
{
    hitobject = hit.gameObject.tag;
    if(hitobject == "Plane")
    {
        isgrounded = true;
    }
}

どのオブジェクトもトリガーではなく、機能するために剛体を必要としません。

于 2013-08-22T05:41:37.190 に答える
1

同様の問題がありました。ボックス コライダーは衝突オブジェクトほど大きくありませんでした。x と z の値を 2 単位に設定すると、問題が解決しました!

于 2019-06-04T21:25:05.160 に答える