Unity備忘録38頁目「レイヤーでCollision制御」

江上宿六です。

 

記事が書けているというのはとりあえず好調ではあるという事ですね。

こうやって記してきたからブランクも簡単に解消できたので意義深いのです。

 

という事で今回はレイヤーでCollisionを制御しようというものです。

一見よくわからない題ですけども、これをやらないと不都合があるケースが

あったりするのでしっかり覚えておきたいものです。

前回とかでアイテムを生成したり物理挙動をさせてきたりしましたが

現在の状況はキャラとアイテムも判定を行い、弾いたり乗っかったりされます。

f:id:y6yegami:20190705133456g:plain

こういう感じですね。 こういった挙動を求めてるケースも勿論ありますけど

今自分が作りたいのはアイテムも敵もすり抜けるようなタイプのものなのです。

 

アイテムが上のような3Dモデルならこういうのも自然な感じですけど

2Dのアイコンなんかをアイテムとしてドロップさせる場合はこういった挙動は

絶妙に変だと思います。 シュールで面白いかもしれませんけど。

なのでそこをなんとかする為にレイヤーを使います。 

f:id:y6yegami:20190705134639p:plain

インスペクターの上の方です。 普段からこの辺りは見る機会も多いと思いますが

この右下がレイヤーを設定出来る所です。 デフォルトでいくつかありますけど

今回は自分で作ります。 プルダウンメニューからAddLayerを選ぶ、もしくは

メニューバーのEditからProjectSettings→TagsAndLayersを選択しましょう。

f:id:y6yegami:20190705135449p:plain

タグ付けする時にも見られる画面ですが今回はLayersの所です。

先ほどのプルダウンメニューであったのと同じ文字が並んでますが、ここらは

自分では変更出来ないのでグレーじゃない所を選択して追加していきます。

f:id:y6yegami:20190705135846p:plain

とりあえず今はこんな感じにしました。 出来たら早速アイテムのインスペクターに

戻って設定してみましょう。

f:id:y6yegami:20190705140032p:plain

設定出来ました。 同様にプレイヤーの方もレイヤーを設定しましょう。

これでレイヤー分けは出来ましたが、これだけではまだ何一つ挙動は変わりません。

次はメニューバーのEdit→ProjectSettingsからPhysicsを選択します。

f:id:y6yegami:20190705141449p:plain

PhysicsManagerが開きました。 この画面で色々な物理挙動の設定が出来ます。

重力加速度みたいな値もありますが、今回重要なのはこれの下の方にあるやつです。

f:id:y6yegami:20190705141713p:plain → f:id:y6yegami:20190705142225p:plain

対戦表みたいなものが並んでいますが、このLayerCollisionMatrixで衝突を起こす

組み合わせを設定する事ができます。 今回はプレイヤーとアイテムや

NPCや敵なんかを衝突しないようにしたいので、それぞれ対応する所の

チェックを外しました。 それでは実行してみましょう。

f:id:y6yegami:20190705142537g:plain

無事キャラとアイテムが衝突しなくなりました。 何でもかんでも衝突するのを

防ぎたい時にはこのようにレイヤーを使うのが簡単だとおもいます。

 

今回はこんな感じです。

こういう挙動を実現するために色んな事を試したんですよね。

Rigidbodyを取り付けるオブジェクトを変えてみたり、トリガーにしてみたり。

それらの結果の大抵は床をすり抜けて落ちていくことになりましたが。

 

次回は進行具合次第です。