#13 同士討ちを防ぐ

2Dシューティング
このブログは、趣味でプログラミングを勉強中の筆者が、実験を繰り返しながら、WordPressの使い方の練習も兼ねて、備忘録のように記事を残していくものです。Unityのバージョンは6000.0.32f1です。

敵機の同士討ちを防ぐ

前回からだいぶ間が空いてしまいました。実生活の方がゴタついていましてすみません。まだほとんど無名のブログなんで気楽に続けていくスタイルです。続きが気になる方はコメントください。

さて、前回までであらかた形はできあがってきたんですけど、よく見ると敵機同士がぶつかったときに両方消滅しているんですね。これを何とかしたいと思います。

今回のゴール

敵同士がぶつかっても消えないようにする。

解決方法はいくつかあります。敵機の挙動を

  • 自機と自機の弾に当たったときだけ反応するようにする。<オブジェクト名やタグで判別>
  • 敵機と敵機の弾に当たったときは反応しないようにする。<タグで判別>
  • オブジェクトをレイヤーで分ける。同じレイヤーの場合は衝突しないようにする。

などのようにします。今回はレイヤーで分ける方法を採用します。

Enemyのレイヤーを作る

Enemyのプレハブを選択して、インスペクターのレイヤーをクリックします。

ポップアップメニューのレイヤーを追加をクリックします。

名前が空白のレイヤーにEnemyと入力します。これが敵のレイヤーになります。

敵機のオブジェクトが所属するレイヤーをEnemyレイヤーに設定する

Enemyのプレハブを選んで、インスペクターのレイヤーを選択します。Enemyのレイヤーが出てくるので、それを選びます。

Enemyのプレハブを変更することで、プレハブバリアントで作った敵機のレイヤーもEnemyのレイヤーに変わります。そうでない場合は一つずつ変更しなければなりません。面倒ですね。

しかし、これでも敵機の同士討ちは改善されていません。なぜならレイヤー自体の設定をしていないからです。Enemyレイヤーのオブジェクトには、同じレイヤーの衝突判定が起きないようにする必要があります。

Enemyレイヤーの衝突判定の設定を変更する

メニューから編集を選んで、プロジェクト設定を選びます。

別のウインドウが出てきます。①左側の2D物理を選んで、②レイヤーの衝突表のタブを選び、③EnemyレイヤーとEnemyレイヤーの交点のチェックを外します。これで、EnemyレイヤーのオブジェクトとEnemyレイヤーのオブジェクトが衝突しても、衝突判定が発生しないようすることができました。

Project Settingのウインドウを閉じて、実行してみます。

敵機同士が衝突しても、消滅しないですり抜けるようになりました。衝突判定のチェックが起こらないように出来たようです。

今回は、コードを書く必要がありませんでした。

今回はここまでです。お疲れ様でした。

コメント

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