猫でもわかるUnity入門(第12回 玉転がし作成 その4)

f:id:enia:20210228230354p:plain

はじめに

えにあです。 前回はプレイヤー(球体)の動きにカメラが付いてくるようになりました。 前回の状態では、地面らしきものは表示されていますが、色の塗られた範囲を超えてボールが転がって行ってしまいますね。 今回はプレイフィールドを壁で覆い、プレイヤーがフィールドの外に出ていけないようにします。

目次

Wallオブジェクトの作成

まず、空のオブジェクトを一つ追加します。 トップメニューから「ゲームオブジェクト」->「空のオブジェクトを作成」を選択します。
f:id:enia:20210301182337p:plain

このオブジェクトの名前をWallに変更しましょう。 オブジェクトの名前はインスペクターで設定できます。
f:id:enia:20210301182452p:plain

Unityでは、空のオブジェクトはゲームオブジェクトのフォルダとして利用することができます。 この後の手順で、Wallオブジェクトの下に東西南北4つの壁オブジェクトを作成していきますが、その前にWallオブジェクトをリセットします。

Wallオブジェクトを選択し、インスペクターのTransfomrの右側にある「︙」をクリックし、リセットを押します。これにより、Wallオブジェクトの位置が原点(0, 0, 0)になります。
f:id:enia:20210301182948p:plain

この手順は重要です。子オブジェクトを持つオブジェクトは原点に位置する必要があります。

さあ、Wallオブジェクトの下に、実際の壁を追加していきます。 ヒエラルキービューでWallオブジェクトを右クリックし、「3Dオブジェクト」->「キューブ」を選択します。
f:id:enia:20210301183058p:plain

このオブジェクトの名前を「West Wall」に変更しましょう。 West WallがWallの内側に入ったのが分かりますね。
f:id:enia:20210301220634p:plain

シーンビューを見ると、ボールに重なって立方体が重なっているのが分かります。
f:id:enia:20210301221016p:plain

立方体のサイズを変更し、位置を変えることで西側の壁として配置していきます。 その前に、地面のサイズをそろえましょう。

Groundオブジェクトを選択し、インスペクターで拡大/縮小(Scale)を(2, 1, 2)に設定します。
f:id:enia:20210301221316p:plain

この地面のサイズにWest Wallのサイズも合わせていきます。 West Wallを選択し、インスペクターで拡大/縮小(Scale)の値を(0.5, 2, 20.5)に設定します。
f:id:enia:20210301221508p:plain

シーンビューを見ると、なんとなくいい感じのサイズに見えますね。
f:id:enia:20210301221728p:plain

それでは、位置を変えて西側に配置しましょう。 西側なのでX軸の値はマイナスになりますね。-10に設定してみましょう。
f:id:enia:20210301222052p:plain

シーンビューを見てみましょう。西側に壁が配置されました!
f:id:enia:20210301222126p:plain

四方を壁で囲もう

同様に、東、北、南の壁を作っていきます。 ヒエラルキービューでWest Wallを選択し、コピー(ctrl + c) & ペースト(ctrl + v)しましょう。 West Wallがコピーされたのが分かります。
f:id:enia:20210301222333p:plain

同様の手順でもう2つWest Wallをコピーし、それぞれ、East Wall、North Wall、South Wallに名前を変えましょう。
f:id:enia:20210301222658p:plain

East Wallを選択しインスペクターを見てみましょう。 拡大/縮小(scale)にWest Wallで設定した値がすでに入っていますね。 オブジェクトをコピーすると、このように値が引き継がれます。
f:id:enia:20210301222832p:plain

サイズは同じでよいですが、位置は東側に変更する必要があります。 X軸の値を+10に変更すればよいですね。
f:id:enia:20210301223023p:plain

これで西と東が壁で覆われました。
f:id:enia:20210301223401p:plain

北側も同様に設定していきます。 北側は位置をどのように設定すればよいでしょうか。試しに(0, 0, 10)にしてみます。
f:id:enia:20210301223618p:plain

すると、位置は悪くなさそうですが、壁の方向がおかしいですね。
f:id:enia:20210301223705p:plain

これを修正するために、拡大/縮小(scale)のXとXの値を入れ替えて、(20.5, 2, 0.5)に変更しましょう。
f:id:enia:20210301223816p:plain

シーンビューを見ると、北側にも壁が設置されたのがわかります。
f:id:enia:20210301223834p:plain

では最後に南側の壁も設定しましょう。 位置は(0, 0, -10)、拡大/縮小は(20.5, 2, 0.5)に設定すればよいですね。
f:id:enia:20210301224012p:plain

これで四方が壁に囲まれました。
f:id:enia:20210301224106p:plain

実際に動かしてみよう

プレイモードにして実際に動かしてみましょう。 ボールが壁の外には出ていけないようになっていますね!
f:id:enia:20210301224243p:plain

今回はここまで!