今回はUnityのLayerを使ってオブジェクトの接触の設定を変更します。
それを行うのがPhysicsManagerです。
Edit→Project Settings→Physicsの選択で開く事が出来ます。
Unityのバージョンによってはウインドウを開くやり方が多少かわるかもしれません。
PhysicsManagerでは重力に関する設定やレイヤー同士の接触判定の設定等が出来ます。
レイヤー同士の接触判定はLayer Collision Matrixで出来、例えば敵キャラの攻撃の手の部分のレイヤーにEnemyAttackというレイヤーを設定していた場合、他のEnemyとの接触判定をしたくない場合はEnemyAttackとEnemyのMatrixのチェックを外します。
UnityのLayer Collision Matrixを使って接触判定するかしないかを設定する
武器のレイヤーをWeaponとしたら接触判定を行うのは敵キャラだけなので他のオブジェクトの接触判定のチェックを外します。
上の画像はサンプルなので、ちゃんとした設定はされていません(^_^;)
レイヤーは32個までしか作れないみたい?なのでレイヤーをタグ代わりに使わず大雑把な枠組みとして使った方がいいです。
またPhysics.Raycastを使ってレイを飛ばし他のコライダと接触しているか判定することが多々ありますが、Layer Collision Matrixでレイヤー毎に接触判定の設定をしておけば接触しているかどうかの判定をしないので処理速度が上がるかもしれません。
簡単な説明になりましたが、レイヤー毎に接触判定の有無を設定出来るので味方キャラクター同士は攻撃の接触判定をしないといった設定をすることが出来るようになります。