1. ホーム
  2. c#

[解決済み】OnCollisionEnter2Dが実行されない?

2022-02-13 09:43:44

質問

このスクリプトは、何かに衝突すると破壊される弾丸のプレハブ上にあります。問題は、何かに衝突したときにこのメソッドが起動しないことで、その理由がわかりません。デバッグもしたのですが、一度も表示されませんでした。投射物には、rigibody(kinematic)とbox coliderがあります! 衝突するはずのものにもコライダがあります。

public class ProjectileColision : MonoBehaviour {

public GameObject projectile;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
}

void OnCollisionEnter2D(Collision2D col)
{
    Debug.Log("executed");


    if (col.gameObject.tag == "Projectile")
    {
        Destroy(projectile,0);
    }
}
}

解決方法は?

のせいだと思います。 kinematic

キネマティックRigidbody2Dは、ダイナミックRigidbody2Dとしか衝突しません。 のボディタイプです。ただし、Rigidbody2D.useFullKinematicContacts を true に設定すると、他のすべての Rigidbody2D ボディ タイプと衝突するようになります。

https://docs.unity3d.com/ScriptReference/RigidbodyType2D.Kinematic.html

を設定してみてください。 Body Type から Dynamic を確認し OnCollisionEnter が実行されます。

または

動的な Rigidbody2D をもう一方のコライダーに追加します。