【Unity】アセットストアの素材に差し替えたら当たり判定が消えた?「すり抜ける」原因と解決策を徹底解説!

Unity

Unityでゲーム開発をしていて、「アセットストアからダウンロードしたかっこいい3Dモデル(または2Dイラスト)にプレハブを差し替えたら、なぜか弾や敵の当たり判定が消えてすり抜けてしまう…」と悩んでいませんか?

実はこれ、Unity開発において非常によくあるトラブルです。

この記事では、プレハブを素材と入れ替えたときに当たり判定が消える原因と、シューティングゲームなどで正しく当たり判定(衝突検知)を復活させるための具体的な手順をわかりやすく解説します!

1. なぜ素材を入れ替えると当たり判定が消えるのか?原因はコレ!

アセットストアからダウンロードした3Dモデルや素材をそのままヒエラルキーに配置すると、スクリプトや当たり判定が機能しなくなることがあります。原因は主に以下の2つです。

  • 素材自体に「Collider(コライダー)」がついていない アセットストアの素材の多くは「見た目(Mesh)」のデータだけで、物理的な「当たり判定(Collider)」を持っていません。元のプレハブを丸ごと差し替えた際、コライダーごと消えてしまった可能性が高いです。
  • コンポーネントやスクリプトが外れてしまった オブジェクトを差し替えたことで、以前設定していたスクリプトや Rigidbody などの重要なコンポーネントがリセットされてしまうためです。

2. 【解決策】消えた当たり判定を復活させるステップ

消えてしまった当たり判定は、手動でコライダーを追加し直すことで簡単に修正できます。今回は一番汎用的な 「Box Collider」 を使った手順を解説します。

ステップ1:コライダー(Collider)を追加する

  1. ヒエラルキー上で、当たり判定をつけたいオブジェクト(弾や敵など)を選択します。
  2. インスペクター(Inspector)の一番下にある 「Add Component」 ボタンをクリックします。
  3. 検索窓に 「Box Collider」(2Dゲームの場合は Box Collider 2D)と入力し、追加します。

ステップ2:シューティングゲームなら「Is Trigger」にチェックを入れる

ここが非常に重要なポイントです! シューティングゲームの弾や敵のように、「物理的にガツンと跳ね返るのではなく、すり抜けた瞬間を検知してダメージを与えたい」 という場合は、追加した Box Collider 内にある 「Is Trigger」 に必ずチェックを入れてください。

💡 Is Triggerとは? チェックを入れると、オブジェクト同士が物理的に衝突して止まることがなくなります(すり抜けます)。その代わり、プログラム側で「重なった瞬間」を検知できるようになります。

3. まだ動かない?当たり判定が反応しないときの3大チェックリスト

コライダーをつけて Is Trigger にチェックを入れたのに、なぜかまだ弾が当たらない…というときは、Unityの「衝突検知のルール」を満たしていない可能性があります。次の3点を確認してみましょう。

① どちらか一方のオブジェクトに「Rigidbody」はついていますか?

Unityの仕様上、衝突を検知するには移動する側のどちらか一方(または両方)に Rigidbody(または Rigidbody 2D)コンポーネントが必要です。

  • 弾のプレハブ、または敵(プレイヤー)に Rigidbody を追加しましょう。
  • ※物理演算で動かさず、スクリプトで移動させている場合は、重力で落ちないように Rigidbody「Is Kinematic」(2Dの場合は Body Type を Kinematic に)にチェックを入れておきます。

② スクリプトの「関数名」は合っていますか?

Is Trigger を使用する場合、スクリプト側で呼び出す関数(メソッド)が間違っているとプログラムが走りません。

  • 3Dゲームの場合: void OnTriggerEnter(Collider other)
  • 2Dゲームの場合: void OnTriggerEnter2D(Collider2D collision)

OnCollisionEnter(Triggerを使わない物理衝突用)になっていないか、大文字・小文字が間違っていないか(例:OntriggerEnter はNG)を確認してください。

③ スクリプト自体が消えていませんか?

プレハブを差し替えた際、以前割り当てていた「ダメージ処理」や「消滅処理」のスクリプト自体が外れてしまっていることがあります。インスペクターを見て、必要なスクリプトがアタッチされているか再度確認しましょう。

まとめ

Unityでアセットストアの素材に変更した際に当たり判定が消えたら、以下のセットを思い出してください。

  1. Box Collider などのコライダーを再追加する
  2. すり抜けさせたいなら Is Trigger にチェックを入れる
  3. 動く方に Rigidbody(Kinematic設定)を忘れない

この仕組みさえ覚えておけば、今後新しい武器や敵キャラクターを追加するときも怖くありません!ぜひ楽しいゲーム開発を続けてくださいね。

コメント

タイトルとURLをコピーしました