【中学生・高校生におすすめ】Unityで3Dゲームを作ってみよう!(第1回)

【中学生・高校生におすすめ】Unityで3Dゲームを作ってみよう!(第1回)

(画像はUnity 2019.4より)

Unity(ユニティ)とは、プログラミング初心者がプログラミングをはじめるのにおすすめな技術です。
より詳しく知りたい方はこちらの記事をご覧ください。

【初心者におすすめ】ゲーム開発で人気のUnityの特長を3つ紹介!

しかし、Unity紹介のコラムを読んだだけでは、Unityでどのようにゲームを作ったらいいのかまでは分かりません。

このコラムでは、プログラミング教室N Code Labo(Nコードラボ)がUnity初心者に向けて、実際にUnityをインストールし、どのようにゲームを作るのかという、Unityを使えるようになるまでの一連の流れを紹介します。

今回作るゲームは、プログラミングにはじめてチャレンジする方や、Scratch(スクラッチ)よりも複雑なゲームを作りたい方向けの内容です。このコラムに沿ってゲームを作ることで、以下の3点の概要を掴むことができます。

  • ・Unityの使い方
  • ・プログラムを書く方法
  • ・ゲームを外部に公開する方法

本コラムの構成

本コラムは全3編で構成されています。

第1回(今回)
Unityのインストールと簡単なプログラムを制作する

第2回
Unityで3Dゲームを制作する

第3回
3DゲームをWebサイト上で遊べる形にする

それぞれ1時間30分程度で完成させることができます。

Unityをインストールしよう

プログラミングをはじめるために、Unityをインストールしましょう。
Unityをインストールする際は、UnityHub[※]をインストールしてから、Unity本体のインストールを行います。

※UnityHub:Unityのバージョンを管理してくれるツールです。スマホやパソコンをアップデートをするとアプリが動かなくなることがあるのと同様に、Unityでもアップデートするとゲームが動かなくなることがあります。UnityHubでバージョンを管理することによって、ゲームが動かなくなることを避けられます。

まずは、Unityの公式サイト にアクセスしてください。

(画像はUnity公式サイト より)

画面右上の「はじめる」をクリックし契約プランの選択画面に移動します。

Unityは企業やチームで使う際は有料ですが、個人の利用は無料です。今回は、「個人向け」の中にある「Personal」で利用します。「Personal」の下にある「はじめる」を選択してください。

(画像はUnity公式サイト より)

次に、「新規ユーザー」の「はじめる」をクリックしてください。クリックすると利用規約の確認画面が出てくるので、そのまま規約内容に同意し、ダウンロードをはじめてください。
Macなら「UnityHubSetup.dmg」が、Windowsなら「UnityHubSetup.exe」がダウンロードされます。

(画像はUnity公式サイト より)

ダウンロードが完了したら、「UnityHubSetup.dmg」または「UnityHubSetup.exe」を開いてください。インストーラーが立ち上がり、インストールがはじまります。

(画像はUnityHub インストール画面より)

UnityHubがインストールされると、続けてUnity本体のインストールがはじまります。

(画像はUnity インストール画面より)

インストールの手順を進めていく、どのようなゲームを作るか選択する必要があります。今回は3Dゲームを作るので、「3D」を選択してください。

(画像はUnity インストール画面より)

ここまで終わるとインストール完了まで待つよう指示があります。インターネット回線の速度によりますが、インストール完了までおよそ30分から1時間ほどかかります。

次のような画面が表示されたらインストール完了です。

次は実際にUnityを操作して、簡単なプログラムを作成していきます。

Unityを操作しよう

操作画面の名前を覚えよう

Unityの画面は、すべて英語で表現されているため、ひと目ではどのようなものなのか分かりづらい……と感じると思います。
そこで、画面の名称と機能をまとめて紹介します。途中でどこを指しているかわからなくなったら、ここを確認してください。

  • ・Scene view(シーンビュー)

    実際に操作していく画面です。ここでステージ制作やプレイヤーや壁などの配置を行います。最初は、シーン=場面のことだと思ってください。「タイトル」という場面、「バトル」中の場面などを操作するのがScene view(シーンビュー)です。

  • ・Game view(ゲームビュー)

    ゲームを再生したときの画面です。シーンとゲームは分割して表示することもできます。実際にゲームをプレイするときのプレビュー画面の役割を果たします。

  • ・Hierarchy view(ヒエラルキービュー)

    プレイヤーや敵、壁やメニューボタンなど、目に見える素材の一覧が並びます。現在操作しているシーンを編集するための画面だと思ってください。

  • ・Project view(プロジェクトビュー)

    画像や音楽、プログラムなどゲームのデータのすべてが並びます。「タイトル」「バトル」「エンドロール」など、複数のシーンを管理するときなどに使用します。

  • ・Inspector view(インスペクタービュー)

    選択しているオブジェクト(キャラクターなど全ての物体)の設定値を表示します。ここで当たり判定をつけたり、位置の微調整を行います。

ボールと箱を用意しよう

まずは実際の操作とプログラミングに慣れるために、「ボールが落下して、箱に触れると消える」という簡単なプログラムを作ります。

上メニューより「GameObject」をクリックし、「3D Object」にカーソルを合わせ、「Cube」をクリックします。画面に四角い箱(以降、Cube)が表示されます。
「3D Object」には他にも「Sphere(球体)」や「Capsule(カプセル)」などあり、さらに自分で作ったオブジェクトを取り込むこともできます。

次に「GameObject」から「3D Object」を選択し、「Sphere」をクリックします。画面に今度はCubeと同じ位置に球体(以下、Sphere)のオブジェクトが表示されます。

同じ位置では、ボールが消える様子を観察できないので、ボールを真上に移動させます。画面を見ると、赤・緑・青の3つの矢印があります。それぞれ赤をX軸(左右)、緑をY軸(上下)、青をZ軸(高さ)と呼びます。この3つの軸を使うことで、オブジェクトの位置を指定することができます。

今回は真上に移動させるため、「Inspector View」で「Sphere」を「Y軸」で正方向に移動させる必要があります。操作する対象が「Sphere」になっていることを確認し、「Position(位置)」のYを「0」から「5」に変更します。画像のように「Sphere」が「Cube」の真上に移動したら完成です。

ボールが落ちるようにしよう

次に、「Sphere」が「Cube」に向かって落ちるプログラムを作ります。落とすためには「Sphere」に重力を設定する必要があります。重力を設定するために、「Sphere」に「Component(コンポーネント)[※1]」を追加します。

「Inspector View」の最下部にある「Add Component(設定追加)」をクリックし、「Rigidbody[※2]」と打ち込み検索します。検索結果に表示された「RigidBody」をクリックしてください。「Rigidbody」の設定を加えたことで、「Sphere」に重力が働くようになります。

※1 Component(コンポーネント):オブジェクトにつけているさまざまな設定のことを指します。キャラクターに歩く、ジャンプするなどの動きをさせる設定や、ぶつかるなどの様々な設定を加えることができます。

※2 Rigidbody(リジッドボディ):オブジェクトに物理法則を加える際のさまざまな設定のことを指します。今回は「Sphere」に重力を付与していますが、この他にも、オブジェクト自身の重量や摩擦、空気抵抗などをつけることができます。重力が付与されたことで「Sphere」は落ちていきますが、「Sphere」がサッカーボールなのか鉄球なのかで着地したときの跳ね方も変わってきます。この跳ね方を調整するときに、Rigidbodyを使用します。

ここまで完了したら、実際にゲームをプレイしてみましょう。画面中央上部に動画再生のようなボタンがあるので、再生ボタンをクリックすると、ゲームが実行されます。実行すると「Sphere」が落ち、「Cube」に着地します。

Sphereにタグをつけよう

次に、「Sphere」と「Cube」が触れたら、「Cube」が消えるプログラムを作っていきます。
「Cube」に「Sphere」を認識させるよう、「Sphere」にタグ(分類)をつけていきます。
タグは同じ動作をするグループを設定するときに使います。タグをつけることで同じグループになり、同じタグをつけたオブジェクトに一斉に命令を出すことができます。例えばアクションゲームで敵に「enemy」というタグをつけて、ゴールに着いたら「enemy」のタグのついたオブジェクトを消す処理をすることで、全ての敵をまとめて消すことができます。このように、タグを使うことで効率的にゲーム開発を進めることができるようになります。

今回は、「Sphere」に「ball」というタグをつけます。「ball」というタグを作成して、それを「Sphere」の名前にする必要があります。

まず左の「Hierarchy」より「Sphere」を選択し、右の「Inspector View」の画面より「Sphere」の下にある「Untagged」をクリックします。バーが出てきますので、一番下にある「Add Tag」をクリックします。

「Inspector View」がタグの設定画面に変わります。タグを追加するので、「+」ボタンを選択してください。ここでテキスト入力欄が現れるので、そこに「ball」と入力してください。これで、「ball」というタグが完成しました。

次に、今作った「ball」というタグを「Sphere」につけます。

左の「Hierarchy View」より「Sphere」を選択します。次に右の「Inspector View」の画面より「Sphere」の下にある「Untagged」をクリックして、下にある「ball」を選択します。

これで、「Sphere」に「ball」のタグをつけることができました。

Unityでプログラムを作ろう

ここからは実際にプログラムを書いていきます。
作るプログラムは「Sphere(ball)」と「Cube」が触れたら「Cube」を消すというプログラムです。

プログラムは「Cube」が消えるというものなので、「Cube」に判定の設定をつけます。左の「Hierarchy View」より「Cube」を選択します。次に右の「Inspector View」の画面より一番下にある「Add Component」をクリックします。すでにさまざまな設定が用意されていますが、今回は新しい設定を追加するので、現れたバーの下部にある「NewScript[※]」をクリックします。

※ NewScript:新しい設定を作成することができます。設定を作成する際は、プログラミングを行う必要があります。

クリックすると、Scriptの名前をつけるテキスト欄が表示されます。テキスト欄に「CubeScript」と入力し、下の「Create and Add(作成と追加)」をクリックします。ここまでで、設定作成の準備が完了しました。次に、設定の内容を作成します。

設定の中身を作成するために、ここからいよいよプログラミングを行います。まずは、プログラミングするための編集画面を表示します。

左の「Hierarchy View」より「Cube」を選択します。次に右の「Inspector View」の画面より下にある「CubeScript」をダブルクリックします。

しばらく待つとVisualStudio(統合開発環境)というアプリが立ち上がり、プログラムの編集画面が現れます。

これでプログラミングをする準備が整ったので、これからコードを書いて、「ball」と「Cube」が触れたときに「Cube」を消すというプログラムを作ります。
すでにコードが書かれていますが、これは必要なプログラムなので消さないようにしてください。「public class CubeScript : MonoBehaviour{}」の「{}」の中にコードを書き加えることで、このゲームに独自のプログラムを追加することができます。

では、実際に下の黒字のプログラムを書き加えてみましょう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeScript : MonoBehaviour
{
 // ここからゲームに独自のプログラムを追加できます
  // Start is called before the first frame update
  void Start()
  {
  }
  // Update is called once per frame
  void Update()
  {
  }
  void OnCollisionEnter(Collision collision)
  //物体と物体がぶつかったときに以下のチェックが行われる
  {
   if(collision.gameObject.tag=="ball") //ballとCubeが触れているなら
    {
    Destroy(this.gameObject); //Cubeを消す
    }
  }
 // ここまでゲームに独自のプログラムを追加できます
}

入力が終わったら上のメニューより「ファイル」を選択し、「保存」をクリックしてください。

10秒から30秒ほど待つとUnityにプログラムが反映されます。

太字で書いた箇所は「もし、「ball」と「Cube」が触れたら「Cube」を消す」というプログラムになります。

「if(collision.gameObject.tag=="ball")」でballとCubeが触れたかどうかを確認しており、触れた瞬間、中身の「 Destroy(this.gameObject);」が作動し、Cubeが消えます。そして、これを常に確認し続ける必要があるので、「void OnCollisionEnter(Collision collision)」で囲っています。

これでプログラムが完成したので、ゲームをプレイして動作を確認してみましょう。「ball」が「Cube」に触れたら「Cube」が消え、「ball」は重力によってさらに落下するというプログラムが反映されているのが分かります。

これで一般的に「当たり判定」と言われる、ぶつかったら片方が消えるプログラムが完成しました。ゲームでよくある、「コイン取得時にコインが消えるプログラム」はこのようにして設定されています。

ここまで作ったゲームを保存しよう

最後に、作成したものを保存します。

上のメニューより「File」を選択し「Save」をクリックしてください。ファイル名は「3DBall」としてください。
次回のコラムでは、このゲームをさらに開発し、より複雑なゲームを作っていきましょう。コラムの更新をお待ちください。

まとめ

今回は、ゲーム制作を行うためにUnityをインストールし、実際にプログラムを作りました。ふたつの物体が触れたときに片方が消えるプログラムでしたが、このプログラムを応用することで、ゴールの表示を出すことや、ゲームオーバーの判定をすることができるようになります。

※今回作ったプログラムの完成例はこちら(WebGLのページ)で公開しています。

プログラミング未経験者がUnity(ユニティ)を体験できるプログラミング教室、N Code Labo(Nコードラボ)とは?

N Code Laboは、小学生・中学生・高校生に実践的なプログラミング教育を提供しているプログラミング教室です。新宿・秋葉原・横浜の3教室で開講している通学コースと、オンラインで学ぶネットコースがあります。
カリキュラムはIT業界で活躍する人材を輩出しているN高等学校のプログラミング教育がベースとなっており、作品を作り上げる大切さや楽しさを味わいながら、一人ひとりの速度に合わせた少人数制でプログラミングが学べます。

パソコンやタブレットなど好きなツールではじめられるため、プログラミング未経験者や、子どもでも自分オリジナルの作品が作れます。プログラミングをより実践的に学べるのがUnity。プログラミング教育の必要性が高まる今こそ、Unityの世界を体験してみてください。

ネットでも通学でも ゲームプログラミングなら N Code Labo

N Code Labo では、Unityが学べる体験授業を”無料”で開催しています。
プログラミングを全くしたことがなくても、少しでもUnityに興味を持ったなら、ぜひ、無料の体験授業にお越しください。そして、プログラミングの楽しさを一緒に体感しましょう。

↓体験授業の詳細、お申し込みは下のボタンから↓

詳しい資料の請求や
無料体験へのお申し込みはこちら