はじめに
2Dにて衝突判定を実装したことはあるが、その際は特殊な方法(ダミーのオブジェクトをプレイヤーの周囲に配置して判定していた)で行っていた。
今回3Dにて衝突判定を行ったため、メモ。
内容
特殊なメソッドであるところのOnCollisionEnter()
を実装する。
このメソッドは、メソッド名の通りアタッチされているオブジェクトの当たり判定の内部に別の当たり判定がぶつかった(正確には重なった)時に呼ばれるメソッドとなる。
衝突判定
/// <summary>
/// 衝突した際に呼ばれるメソッド
/// </summary>
/// <param name="collision">衝突したオブジェクトとの衝突情報</param>
void OnCollisionEnter(Collision collision)
{
// タグが「objectA」のオブジェクトと衝突した場合
if (collision.gameObject.tag == "objectA")
{
// ここに処理を書く
}
// 名前が「objectB」のオブジェクトと衝突した場合
else if (collision.gameObject.name == "objectB")
{
// ここに処理を書く
}
}
詳細
上のコードを見ていただければおそらくわかっていただけるだろうが、一応説明をしておく。
collision.gameObject
にてオブジェクトを取得し、そのタグや名前にて絞り込みを行って、衝突したオブジェクトを特定している。
(ほかにも絞り込みの方法がある可能性もあるが、ここでは割愛させていただく。)
まとめ
これで衝突判定を行う際に、衝突したオブジェクトによって処理を変えることができるようになる。