Unityで作る「シューティングゲーム」Vol.02 - ファイブボックス

Unityで作る「シューティングゲーム」Vol.02

「ユニティで作るシューティングゲーム」初回の前回はエンドレスで背景をスクロールさせるプログラミングを実装しました。
今回は、背景に惑星や星雲を追加、さらに追加した惑星を回すプログラムをほどこしてみたいと思います。

Step:1 惑星、星雲の準備と配置 

ただ宇宙の画像が流れても面白くないので、背景に星雲や惑星を配置してみましょう。

①必要な素材は前回アセットストアから取得したものを使います。
まずは星雲の画像を [ Background Elements ] => [ Dust and Nebulae ] から取得します。いろいろな素材があるので迷いそうですね。
選択した素材は、前回作成した背景の中の、好きな場所に配置してください。

②このままでは、宇宙の背景の後ろに隠れてしまいます。
前回学習した「SortingLayer(ソーティングレイヤー)」という機能を使って、レイヤーを管理したいと思います。
あらたに「nebula」というレイヤーを作り、前回作った「BackGround」の下に配置します。レイヤーは下にあるほど、手前に表示されますよ。
このレイヤーを、今回追加した星雲の SortingLayer にセットしましょう。

③これら配置した場所にある「BackGround」の子要素にします。二つの背景にまたがっていたら、上に位置する「BackGround」の子要素にしておきましょう。
こうすることで、親要素と一緒に移動することができます。

④続いてこの素材(星雲)の大きさを指定します。名前を変更したい場合はここで変更しておきましょう。

Unityで作るシューティングゲームV0l.02a

⑤続いて惑星を配置します。
地球や月の素材があって楽しそうですね。下の画像のディレクトリをたどり、素材を指定し、背景の上に配置します。
ここからの手順は①~④と同じですよ。

⑥背景の「BackGround」や星雲より前に出したいので、新たに SortingLayer 「Planet」を作ります。
作成画面では先に作った2つのレイヤーより下に配置して、惑星にセットします。

⑦作成した惑星を、「BackGround」の子要素として配置します。
星雲と同じように、配置した場所にある「BackGround」の子要素になるように注意しましょう。

⑧最後は大きさと位置の調整を行い、必要に応じ名前を付けます。

Unityで作るシューティングゲームV0l.02b

⑨前のステップで、地球と月の画像を取り込んでおります。よりリアルに表現できるように、地球と月に影をつけてみましょう。
このアセットには Mask(マスク=影)が用意されていますので、これまでの手順と同じ要領で素材を取り込みます。だいぶユニティの操作にも慣れてきたでしょうか?

⑩Mask は惑星の手前に表示させます。エディタの SortingLayer で「PlanetMask」という新たなレイヤーを作り、「Planet」の下に配置します。
この SortingLayer を、今回追加したMaskにセットします。

⑪これまでと同様の手順で、「BackGround」の子要素として配置します。

⑫続いて位置を調整します。惑星と同じ場所、大きさを指定するとピッタリ合うはずです。
さらに、Transform コンポーネントの Rotation の Z軸 を調整することで、影の角度を指定することができます。
Z軸とは画面の手前から画面の奥に向かう軸です。この軸を中心に回転させるということですね。

Unityで作るシューティングゲームVol.02 イメージ画像

さてここまでの過程で背景ができたわけですが、いったん動かしてみましょう。
イメージ通り動きましたか?ここまでは、Unityの操作という感じで、プログラミングの要素があまりありませんでした。
最後はプログラミングの学習を行います。
「PlanetContoroller.cs」というC#スクリプトファイルを作成します。スクリプトファイルに以下のコードを記述してください。

public class PlanetsController : MonoBehaviour
{
    public float rotateSpeed;     //回転速度(inspectorで指定)
    void Update() 
    {
        transform.Rotate(new Vector3(0, 0, rotateSpeed)); //Z軸中心として回転
    }
}

前回は transform.position  を使ってオブジェクトの場所を変化させましたが、今回は transform.Rotate でオブジェクトの角度を更新しています。
手本では地球の他に、もっと大きい惑星にもこのスクリプトファイルをセットしています。
2つの惑星のスピードが同じでは面白くないので、変数を使ってUnityのオブジェクト側から値を変更できるように、変数のアクセス修飾子に Public を指定しています。

下の図で見ていきます。⑬作成した「PlanetContoroller.cs」を動かしたいオブジェクトにアタッチします。
さらにアタッチしたオブジェクトの Inspector、「PlanetContoroller.cs」の変数「rotateSpeed」に適当な値をセットします。手本では0.003を代入しています。必要に応じ、他のオブジェクトにも同様の処理を施します。

⑭これでユニティを動かしてみましょう。セットしたオブジェクトが回転しているのがわかると思います。

Unityで作るシューティングゲームV0l.02d

今回はここまで。
次回はいよいよ、プレイヤーを作っていきますよ。

教室では実際に通って頂いての授業の他、オンライン授業も行っています。ご興味がある方は、ぜひお問い合わせ、または体験授業にお問い合わせください!
お問い合わせは こちら から。体験授業のお申込みは こちら から。

TOP