Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity】2Dタイルマップ⑥ Isometricな障害物との衝突と、障害物の後ろに回り込む

Unity 2020.2.1f1 Personal(2021年3月)

前回の続きです〜
今回は2Dタイルマップを活用してIsometricな障害物を作成して、
プレイヤーのスライムが障害物の後ろに回り込む機能を実装していきます。

f:id:hiyotama:20210315234121p:plain

Transparency Sort Modeの設定

スプライトの前後関係を決定するのはSorting LayerとOrder In Layerが基本ですが、
互いの位置関係によって動的に前後を変更したい時があります。
そんな時に活用できるのがTransparency Sort Modeです。

tsubakit1.hateblo.jp

こちらの記事でとても詳しく解説されています。

今回はスプライトのYの位置によって前後関係を変更していきます。
Transparency Sort ModeはメニューからEdit > Project Settingsを開き、
Graphics > Camera Settingsにて設定できます。
Transparency Sort ModeをCustom Axisに、
Transparency Sort AxisをX:0 Y:1 Z:0に変更します。

f:id:hiyotama:20210316000234p:plain

これでスプライトのYの位置が大きいほど奥に表示されるようになりました。

障害物を作成する

続いて障害物を作成していきます。
今回はこちらの画像をご活用下さい。

f:id:hiyotama:20210315234339p:plain
stone_block2.png

Unityに画像をアップしたらいつものように
Pixel per Unitを32、Filter ModeをPoint(no filter)に設定します。
今回は追加でPivotの位置を変更します。
スプライトの前後関係が変わる境目がPivotであるためです。
スプライトを選択した時にInspectorに表示されるSprite EditorからPivotを編集します。

f:id:hiyotama:20210316000201p:plain

画像のようにちょうどプレイヤーが回り込む境目の高さにPivotを設定します。

続いて障害物の衝突判定(Collider)を設定していきます。
引き続きSprite Editorビューにて設定を行ます。
Sprite Editorと書かれた箇所をクリックすると一覧にCustom Physics Shapeがあるので選択します。

f:id:hiyotama:20210316001015p:plain

Custom Physics Shapeで形成した範囲がTilemap Collider2Dの範囲になるため、
Unity公式マニュアルを参照しながら下の画像のような形で囲んで下さい。

f:id:hiyotama:20210316001037p:plain

ここまでできたら前記事を参照し、
TilePaletteにスプライトを載せTilemapに障害物をひとつ配置します。

f:id:hiyotama:20210316001904p:plain
配置完了

配置が完了したら衝突判定(Collider)を有効にする前にひとつ確認してもらいたいことがあります。
stone_block2 TileアセットのCollider TypeSpriteであるかを確認して下さい。

f:id:hiyotama:20210316001755p:plain
Spriteを選択するとCustom Physics Shapeの形通りのColliderが付く

それではTilemapオブジェクトにTilemap Collider2Dコンポーネントをつけて下さい。
Custom Physics Shapeの形通りにColliderがついているはずです。

f:id:hiyotama:20210316002125p:plain
緑色の部分がCollider

プレイヤーを作成する

続いてプレイヤーを作成していきます。
こちらの記事を参照しながらPlayerスクリプトとPlayerControllerスクリプトを書きプレイヤーが動く状態にしてください。

hiyotama.hatenablog.com

一点追加で編集してもらいたいのはやはりPivotです。
Sprite EditorにてPivotの位置をスライムの下に設定します。

f:id:hiyotama:20210316002632p:plain

続いてPlayerオブジェクトのSprite RendererにあるSprite Sort Point
CenterからPivotに変更してください。

f:id:hiyotama:20210316002844p:plain

以上でプレイヤー側の設定も完了です。
それでは結果を見てみましょう。

結果

f:id:hiyotama:20210316003941g:plain

無事障害物と衝突することができました。
またPivotを境目に前後関係が変わり、障害物の後ろに回り込むこともできました。

今回は以上です。
ありがとうございました〜。