Unity入門4

Space Shooter①

(スペースシューター)

  • 今から作るSpace Shooter(スペースシューター)というゲームは、Unity公式のチュートリアルのゲームで、最後まで完成すれば、結構本格的なゲームが出来上がります。
  • 次のページにゲームを貼り付けているので、実際に遊んで見ましょう。
    • ※ゲームが読み込まれるまで1分ぐらいかかるかも。表示されなければ言ってください。

はじめに

操作方法

左移動 ⇛ Aキーまたは十字キー左

右移動 ⇛ Dキーまたは十字キー右

上移動 ⇛ Wキーまたは十字キー上

下移動 ⇛ Sキーまたは十字キー下

玉を撃つ ⇛ マウスクリック

  • 遊んでみましたか?
  • まずはこれを完成形として作って行きましょう。
    • 途中アレンジ出来るところは、お好みでアレンジもして行きます。
  • ちなみにこのゲーム、見た目は3Dですが、システム的には2D的です。
  • そのためスクラッチでは非常にカンタンに作れるタイプのゲームです。
  • スクラッチの裏側ではこんな処理が行われている】と想像しながら作っていくと理解が深まるでしょうたぶん。
  • ※尚、Unityのチュートリアルのコードは古いので、そのまま作ってもエラーも多く、大部分変更してます。

はじめに

  • では早速作っていきましょう。
  • Unityを開いて新しいプロジェクトをつくりましょう。
  • ここでは、プロジェクト名は[Spece Shooter]にしてますが、同じにはしないでください。
    • 覚えやすい名前を考えてつけておいてください。
  • またLocationはCドライブに指定しておいてください。
    • ※わからなければ必ず聞いてください。
  • 他はそのままでOKです。

新しいプロジェクトを作成

  • まず必要なAsset(アセット)を用意します。
  • アセットとは資産や財産みたいな意味で、Unityにおいてはスクリプト画像Prefab音声ファイルなどのことをアセットと呼びます。
  • 今回は、すでに用意されてあるアセットを使います。
  • Unityの上のメニューから[Window]→[Asset Store]を選択してください。
    • ※Asset storeではお金が発生しますので、勝手な操作は絶対にしないでください。

アセットをインポート

  • Asset Storeでは、その名の通りゲームで使うアセットをダウンロードする事ができます。
  • 無料の物や、有料の物など色々あります。
  • 今回のゲームで使うアセットは無料で公開されていますので、それを使います。
  • 下の画面の検索欄に、【Space Shooter】と入力し、検索ボタンを押してください。
    • ※表示されている画像はちょこちょこ変わるので、違うくてOKです。

アセットをインポート

  • 左のような画面になると思うので、少し下にスクロールしてください。
  • 左下の画像が出てきますので、それの一番上の【Space Shooter tutorial】を選んでください。※次に続く

アセットをインポート

※一番上の文字をクリックする

  • 左のような画面になると思うので、またスクロールしてください。
  • 左下の画面が出てきたら「import(インポート)」の項目をクリックしてください。
    • ※「ダウンロード」になっているかも知れませんが、その場合は「ダウンロード」クリックしてください。

アセットをインポート

  • 上のような画面が出るので(英語の場合もあり)、またインポートをクリックしてください。
    • (上書きになるけどええんか?って注意文です。)

アセットをインポート

  • すると左のような画面が出てきます。
  • 赤線の部分
    1. _Complete-Game.unity
    2. _Completed-Assets
    • のチェックマークだけを外して、それ以外をimport(インポート)しましょう。
    • ※画像と同じ状態にしてください。

アセットをインポート

  • 完了すれば、Projectビューに色んなアセットが追加されます。
  • 上のようになればOKです。これでアセットが追加されました。

アセットをインポート

  • フォルダ名は[Scenes]としています。同じにしておいてください。
  • 右の画像になればOKです。

Sceneを保存

  • ここで、一旦Sceneを保存しましょう。
  • 今回、保存場所が今までとは変わりますので、以下をちゃんと読んで正しい場所に保存してください。
  • まず、インポートしたアセット内に新しいフォルダを作ります。
  • ProjectビューのAssets(アセットズ)を右クリックし、新しいフォルダを作成してください。
  • Sceneを保存するためのフォルダができたので、早速、今のSceneを保存します。
  • 前まで同じようにSceneを保存しようとすると、Assetフォルダが開くと思います。
    • その中にさっき作った「Scenes」があるはずですので、それを選択してから、保存します。
      • ※みつからない場合は聞いてください。
  • ココではScene名は[Level01]としています。まぁこれはなんでもいいです。
    • 保存できたら、ちゃんとあるかProjectビューから確認しておきましょう。
    • ProjectビューのScenesの中に[Level01]があればOKです。

Sceneを保存

  • 次に今後の事を考えて、Sceneビュー(開発画面)とGameビュー(実際のゲーム画面)を同時に表示できるレイアウトに変更しておきたいと思います。
  • こうしておくと開発中に行った変更結果がすぐに確認できるので便利です。
  • 右上の[Layout](レイアウト)をクリックして[2 by 3]に変更してください。

    • ※すでに[Layout]以外になっているかも知れません。

レイアウト変更

  • こんな感じになればOKです。
  • SceneビューとGameビューが並んで表示されていますね。

レイアウト変更

  • もう少し変更してみましょう。
  • 主に使うのはInspectorビューなので、それ以外は1列(カラム)にまとめたいと思います。
  • 下の赤枠(Projectビュー)を、Hierarchyビューの下にドラッグして、ドロップしてみましょう。

レイアウト変更

ココらへんまで持ってくる

  • こんな感じで良いでしょう。
  • レイアウトは好みですが、ココではこのレイアウトで進んでいきます。
    • ※自分に合うレイアウトに変更しても良いです。

レイアウト変更

  • レイアウトが決まったら、保存しておきましょう。
  • また、右上の【2 by 3】になっている所をクリックし、【Save Layout...】を選択します。
  • 小さなウィンドウが開きますので、自分の名前など、区別する名前をアルファベットで入力して【Save】を選択すれば保存できます。※アルファベットしか使えません。

レイアウト変更

  • では、作っていきましょう。
  • まずはプレイヤー(主人公)の戦闘機を用意します。
  • これは用意されているアセットを使いますので、Projectビューの【Assets】→【Models(モデルズ)】を開いてください。次に続く

右下のバーで、表示サイズも調整出来ます。

プレイヤーを設定する

  • vehicle_playerShip】というのがあるので、それをドラッグ&ドロップでHierarchyビューに移動させましょう。

プレイヤーを設定する

  • プレイヤーのオブジェクトが追加されました。

プレイヤーを設定する

  • vehicle_playerShip】はわかりづらいので、名前を【Player】に変更しておきましょう。
  • 変な位置になってるかもしれないので、Transformの内容を以下に変えておいてください。

プレイヤーを設定する

  • 次に【Rigidbody(リジッドボディ)】を追加します。
    • これはオブジェクトに物理法則をあたえるために必要なものでしたね。
  • Add Component(アドコンポーネント)】をクリックし、【physics(フィジックス)】→【Rigidbody】を選びましょう。
  • Rigidbody】が追加できたら、【Use Gravity(ユーズ グラビティ)】の項目のチェックを外しておいてください。
    • ※重力はいらないということ。
  • 次に【Colliderコライダー)】を設定します。これは当たり判定でしたね。
  • Add Component】をクリックし、【physics】→【Mesh Collider(メッシュ コライダー)】を追加しましょう。
  • 追加できたら【Convex(コンヴェクス?)】にチェックを入れてください。
    • Convex】とは凸面の事で、凸面に対してColliderを設定できたというわけです。
  • さらに【Is Trigger(イズ トリガー)】にもチェックを入れておきましょう。
    • これは敵とかにぶつかった時、押されるのではなく、爆発だけしてほしいからです。
    • Is Trigger】にすることによって、判定だけ(トリガーだけ)の存在になるんでしたね。

プレイヤーを設定する

  • 次に、プレイヤーのエフェクトも用意されているので付けてあげましょう。
  • Projectビューの【Assets】→【Prefabs】→【VFX】→【Engines】→【engines_player】をPlayerオブジェクトにアタッチしてみましょう。

プレイヤーを設定する

エフェクトの確認

  • 先ほどアタッチしたエフェクトは【part_jet_flare】【part_jet_core】2種類のエフェクトがセットになっています。
  • Hierarchyビューから開いてみるとわかります。

エフェクトの確認

  • どうやらジェット噴射のエフェクトのようですね。
  • 方向がおかしい気がしますが、実はこれで大丈夫です。
    • 次に続く
  • sceneビューを見てみるとこんな感じだと思います。

エフェクトの確認

  • エフェクトはカメラのアングルとは関係がないので、カメラ側で合わせてあげればちゃんとジェット噴射になります。
  • とりあえずはギズモを動かしてアングルを変えると、ちゃんと合うことがわかります。

カメラを設定する

  • では、カメラを設定していきましょう。
  • Main Camera】の【Transform】を以下のようにしてください。
  • さらに【Camera】の以下の項目を変更します。
    • Clear Flags → Solid Color
    • Background → 黒色
    • projection → Orthographic
    • Size → 10
  • 右の画像のようになればOKです。

カメラを設定する

  • ちょっと解説です。
  • さきほど設定した項目は以下の意味があります。
    • Clear Flags(クリア フラグス) → Solid Color
      • ​Solid Colorにすることで、何もオブジェクトのない空間に下のBackgroundの色が表示されるようになります。
    • Background(バックグラウンド) → 黒色
      • Solid Colorの色をどれにするかの設定です。
    • projection(プロジェクション) → Orthographic
      • ​​Orthographicにすると【距離によってオブジェクトの大きさを変えない】設定に出来ます。
      • つまり遠近感がなくなるということです。普通は2Dゲームによく使われる方法ですが、今回のゲームもほぼ2Dゲームなので、これを設定しています。
    • Size(サイズ) → 10
      • このサイズが大きければ大きいほど、カメラが映す範囲が大きくなります。

ライトを設定する

  • 次はライトです。
  • 今回は3つのライトを組み合わせて使います。
  • まずは【Directional Light】を消してみてください。
    • 右クリックして【Delete】です。
  • この状況でGameビューを見ると、下のような状況になると思います。
    • ※この時点で全然違う場合は言ってください。

ライトを設定する

  • ライトを消したのに、微妙に明るいですよね?
  • これはLighting(ライティング:照明設定)の初期設定が関係しています。
  • 一旦、この初期設定を変えて、完全に暗くしたいと思います。
  • 画面上のメニューから【Windows】をクリックし、その中の【Lighting】を選択してください。
    • 右の画像参照。

ライトを設定する

  • 小さなウィンドウが開くと思いますので、以下の場所を変更してください。
    • Skybox → none
    • Ambient Source → color
    • Ambient Color → 黒色
  • 下の右画像になればOKです。

ライトを設定する

  • この設定は【環境光】の設定です。
    • 環境光とは、カンタンに言うと外から漏れてくる光です。
    • 例えば、家で電気を消しても完全に暗闇にはならず、多少は見えますよね?完全に暗闇なら本当は何も見えません。​つまり環境光があるから少しだけでも見えるというわけです。
  • ​それを完全に消したのが先ほどの設定です。

ライトを設定する

  • Gameビューを見てみると、完全に真っ暗になっていると思います。
  • ここからライトを作っていきます。
    • ※ちなみにゲームを再生すると、ジェット噴射のエフェクトだけが表示されると思います。

ライトを設定する

  • では、ライトを追加します。
  • Hierarchyビューの【Create】を押して【Light】→Directional Light】を選択してください。
  • 追加できたら、名前を【Main Light】に変更してください。

ライトを設定する

  • Main Light】の設定を、一旦リセットしたいので、以下のようにしてリセットしてください。
    • ※これは座標などの設定が最初から入っていることがあるので、0に戻しているだけです。

ライトを設定する

  • Main Light】の設定を以下のようにしてみましょう。
  • 現時点でSceneビューは下の感じだと思います。

Directional Light】は、本来Position(座標)はどこでも同じなのですが、Sceneビューでプレイヤーを見やすくするために、Y座標を上げています。

ライトを設定する

  • 次に同じ手順で新しいライトを追加、名前を【Fill Light】にして、以下のようにしてください。
  • 現時点でSceneビューは下の感じだと思います。

Colorの項目は好きにしてください。

ライトを設定する

  • 最後のライトも追加し、名前を【Back Light】にして、以下のようにしてください。
  • 下の感じになっていると思います。これで、ひとまずライトは完成です。

ライティング方法

  • さて、今やった3つのライトでのライティング方法は【3灯照明または3点照明】と呼ばれる基本的なライティング技術です。
    • ​※Unityに限った話しではなく、映画やテレビなどでも使われる方法です。
    1. ​まず【Main Light】でオブジェクトを照らし、
    2. Main Light】によって出来た影を【Fill Light】でまろやかにし(この時少し色を入れると味が出る)
    3. Back Light】でオブジェクトの背景から浮かび上がらせる(目立たせる)効果があります。
      • ※【Main Light】は【Key Light】と呼ぶことも多いです。

ライティング方法

  • 実際にライトをOn・Offしてみるとわかりやすいでしょう。
  • Inspectorビューの名前の横のチェックでOn・Offできます。
  • どう変化するかみて置いてください。

ライトをまとめる

  • 最後に先ほどのライトをまとめておきたいと思います。
  • 以下のように新しいオブジェクト【Light】を作って、そこに3つのライトを入れておきましょう。

背景を作る

  • 次に背景を作ります。
  • これも用意されている画像を背景として登録する流れです。
  • まず、Hierarchyビューから【Quad(クワッド)】というオブジェクトを追加してください。
  • 追加したら、名前を【Background】にしておきましょう。
  • Quad(クワッド)】とは”4つ”という意味で、Unity的には4つの角だけのオブジェクトという意味のようです。
    • 背景をつくる時によく使われます。

背景を作る

  • この【Background】に用意されている画像を貼り付けましょう。
  • 背景画像は【Assets】の【Textures】の中の【tile_nebula_green_dff】というファイルです。

背景を作る

  • 現時点では、何も変化がないと思いますので、以下の設定をいれてみてください。
  • さらに【shader】という設定を【Unlit】→【Texture】に変更してください。

背景を作る

  • Gameビューを見てみると、良い感じに背景が登録されていると思います。
  • だいぶ雰囲気が固まってきましたね。
  • ちなみに先ほどの設定のshader】とはカンタンに言うと影をつける設定なのですが、【Unlit】→【Texture】とすることで、ライティングの影響を受けずに画像を表示することが出来ます。
    • ​つまり、元の画像そのものの状態で表示されるということです。

背景を作る

  • ただSceneビューを見ればわかりますが、現在の状況はプレイヤーが背景にめりこんでいます。
  • これをなんとかしておきましょう。
    • 次のページで試してください。

試してみよう

  • プレイヤーが背景にめり込まないように設定してください。
    • ※背景側の設定を変えること。

お疲れ様です

  • ここまでで【プレイヤー】【カメラ】【ライト】【背景】の用意が出来ました。
  • 次回、スクリプトを作り、プレイヤーを動かしていきたいと思います。
  • スペースシューター②へ続く】

スペースシューター1

By kinocode

スペースシューター1

  • 1,672