
このコースを通して作成する3D迷路ゲームについて紹介します。
またこのコースでは、次のサイトからフリーの画像、音楽を使用させていただいています。
FREE BGM: http://dova-s.jp/
無料効果音素材: http://taira-komori.jpn.org/freesound.htm
3D迷路ゲームで使われる技術要素から、このコースを最後まで受講すると得られる知識について説明します。また、このコースではあまり積極的に扱わないUnityの機能についても言及します。
Windowsを例に、Unityのダウンロードからインストール、そしてプロジェクトの作成までの流れを説明します。
C#スクリプトを作成し、ゲームオブジェクトにアタッチして、Debug.Logを使用して初めてのプログラムを作成します。
プログラムの中で、a と "a" は、何が違うのかを説明し、変数について理解を促します。
Unityが最初に自動的に作るプログラムのすべてを、ここで説明します。プログラムは、覚えた知識を使って新しいことを理解していく、という積み重ねの勉強方法のため、最初に表示されるプログラムは、すべての部分をある程度理解していることが望ましいです。そのために、この最初の段階で、目に見えるプログラムはすべて説明します。また { } (波括弧)でプログラムがブロック化されることについて説明します。
{ }によってブロック化したプログラムを、実行するかしないかを条件について分岐するif文について説明します。条件は、変数の中身をチェックする方法を示します。
かつ、や、または、によって複数の条件を組み合わせる方法について説明します。
ゲームの中でif文を使う例として、マウスがクリックされたらキャラクターが移動するという動作を実装します。
例えば if の代わりに while と書いた場合にどのような動作になるのかを示し、繰り返し文の考え方に慣れてもらいます。
繰り返し文のwhileと、条件文のifを組み合わせた例について示し、繰り返し文の内容についてさらに理解を深めます。
ゲームの中で繰り返し文を使う例として、キーを押したときに弾を連射するというものを実装します。
while文の代わりに、for文を用いて繰り返し文を記述する方法について示します。
複数の変数を一度に生成する配列変数について紹介します。
配列のすべての要素に対してある処理を行うことができる、配列のための繰り返し文であるforeachについて説明します。
配列に保存する要素の数を、プログラムの実行中で増減することができる可変長配列について、Listクラスを用いて説明し、実装方法を示します。
番号ではなく、例えば文字ラベルによって配列の要素を取り扱うことができる連想配列について、Dictionaryクラスを用いて説明し、実装方法を示します。
配列のすべての要素に対して一度に処理を行うようなLINQという処理方法について、数値の合計などを求める例を使って説明します。
いくつかの処理を { }でブロック化し、メソッドとして再利用できる方法を示します。
引数(ひきすう)と呼ばれる、メソッドが実行するときのパラメータについて説明し、どのように利用するのかを、ロボットの腕が上がっていなければ上げる、というメソッドを作成する例を用いて説明します。
値型と参照型の変数の違いについて、引数に利用した場合の動作の違いを例を示し、説明します。
変数を宣言したプログラムの中の場所と、その変数が使える範囲(スコープ)の関係について説明します。このスコープを適切に設計することのより、プログラムのデバッグがしやすくなることについても紹介します。
メソッドを呼び出す側と、メソッド側での情報のやり取りについて、戻り値、引数の参照渡し、名前付き引数、省略可能引数について説明します。
クラスを作っていきます。このセクションだけは、Unityの「2D」でプロジェクトを作成していきます。そして最終的に、簡単なロボットのゲームが完成します。まずこの動画では、Unity2Dプロジェクトを新規に作成し、プログラミングを始める前の準備について説明します。
クラスの基本的な形、考え方、継承、アクセス識別子などについて説明します。
表示する画像を入れ替えることによって、ロボットのポーズを変えることを実現します。まずはロボットを取り扱うRobotScriptクラスについて、必要な機能を実装していきます。
どのように考えてクラスを設計するのかを、具体的な例を示して紹介します。ここで、このセクションで作成するゲームのプログラムの構成がすべて明らかとなります。
ロボットをグループとして扱うRobotGroupクラス、さらにそのグループを管理するRobotGeneratorクラスについての実装方法を説明します。
Unityのプレファブ機能を使って、スクリプトによって複数のロボットを自動的に画面に配置する方法を示します。
ロボットのポーズと、勝利したときのダンスを共通的に取り扱うRobotMotionクラスについて、その考え方を説明し、実装方法を紹介します。
マウスがクリックされたときに、2つのグループのロボットたちがランダムに右手か左手を上げる動作について実装します。
ゲームのプレイヤがマウスクリックで指示をしたロボットのポーズと、同じポーズをしているロボットの数をカウントし、多い方のグループが勝利をします。そして勝利したグループのロボットはダンスを踊る、というところまで実装し、このセクションで作成する2Dゲームを完成させます。
ポリゴン、メッシュ、マテリアル、シェーダー、テクスチャ、レンダラー、エフェクト、ゲームオブジェクト、コンポーネント、スクリプト、アセット、シーン、プレファブ、UIなどといった用語について説明します。
シーンビューで視点を変更する方法について説明します。また、グローバル座標、ローカル座標といった座標系について簡単に説明し、最も基本的な数学の部分としてベクトルの四則演算の考え方について触れます。
3D迷路ゲームを作るために使用するゲームオブジェクト、クラスについて説明します。
床、ブロック、ゴールといった3D迷路ゲームのゲームオブジェクトを実際に作成していきます。
迷路を動き回るプレイヤーアイコンを作成します。プレイヤーアイコンは、いくつかの基本オブジェクトを組み合わせて作成します。
Unityゲーム作りのコースです。プログラムの基礎のついて、コースの前半部分では十分に時間を取って解説します。コース後半部分の3D迷路ゲームの作成では、すこし高度なプログラミング技術についても取り扱っていきます。
このコースによって、初めてプログラムを学ぶ人は、プログラミングに対するしっかりとした技術を修得することができます。また少しプログラミングを学んだことがある人にとっては、クラスの設計や具体的なテクニックについて学ぶことができます。さらに人工知能技術の考え方、その中の最も重要な経路探索技術について身に付けることができます。
3D迷路ゲームは、自分自身が迷路の中を動き回るユーザ視点と、迷路全体を上から見た俯瞰視点の2つについて作成します。迷路自体は自分自身で作成できるようになっていて、さらに、迷路を脱出するためのお助けアイテム機能も実装していきます。人工知能の部分では、自動で迷路を解くプログラムを作成し、それを利用して迷路内に登場する敵のキャラクタが自分自身を追いかけてくるようにします。
またUnityの2Dゲームについても少しだけコースの中で取り扱います。