(:3[kanのメモ帳]スマートフォン用の表示で見る(:3[kanのメモ帳]個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。PersonalRayCastシリーズ1.使い方2.衝突するオブジェクトの制限3.Rayを画面に表示4.2Dで使うはじめにRayCastシリーズ、前回は使い方の記事でした。2回目の今回は衝突するオブジェクトの制限方法についてです。RayCastにすればokです。全てのRayに当たらなくなるので、汎用性はありませんがとにかく楽。LayerMask任意のレイヤーとだけ衝突させたいと言った場合にはレイヤーマスクを使います。衝突するオブジェクトを制限出来ます。layerMask);ちなみに0の時は全てのレイヤーと衝突しなくなります。RayCastにも衝突できるようになるので注意が必要です。以下の例を用いて説明していきます。そもそも、ビット演算やビットマスクが分からない方にはこちらがオススメ。分からなくても使えるとは思います。ビット演算でレイヤーマスクを作る単純なやり方だとビット演算を用います。ビットシフトを行いマスクを作成します。他の方法でも使うので覚えとくと便利です。変換メソッドでレイヤーマスクを取得するLayerMask.GetMaskというメソッドで、レイヤー名の配列からマスクを取得するパターンです。{LayerMask.LayerToName(8)});文字列でレイヤー名を直接指定するか、LayerToNameを使ってレイヤー番号からレイヤー名を作成し、指定します。ビット演算を行うよりは分かり易くなりましたが、ミスの起き易さは大して変わっていない気がしますね。Inspectorからレイヤーマスクを指定するスクリプト上でマスクを作成するのではなく、Inspectorから指定する事も出来ます。複数条件時はちょっとめんどくさくなりそうです。毎回レイヤーマスクを作るのではなく、あらかじめレイヤーマスクを定数として自動で宣言しておき、それを使うパターンです。私が実際にやってる方法でもあります。上記の記事の通り定数クラスを自動生成すると、以下のようにマスクを指定できるようになります。LayerMaskNo.SHIBA;簡単かつ、分かり易い、さらにミスも起こり難いんじゃないでしょうか......!トリガーは検出しない番外編としてトリガーを検出しない方法です。チェックを外せば、トリガーは検出しなくなります。検出対象を分けるのはマスクを使った方がいい気がしないでもないです。はてなブログPro個人ゲーム開発者。ω、)_新作は札束風呂VRや神巫女。Policy広告はてなブログをはじめよう!kan_kikuchiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。