Unityのはじめかた

Unityでゲームが作れるらしい。

そう聞いたあなたは

https://unity.com/ja 

にアクセスしてみる。

しかし残念、出てくるのはダウンロードページと意識が高そうなUnityの紹介ページだけだ。


ここではプログラミングすらわからない人からUnityの触り方がわからない人までを対象に、Unityでのゲーム作りの手順と、その学習方法について紹介することにする。

初歩的なところも含むから、適宜読み飛ばしてくれたまえ。

Unityのインストール

https://unity3d.com/jp/get-unity/download

がんばれ。

とりあえず個人的に使うのなら、個人向け、PersonalでOKだ。

Unityのゲームづくりの概略

Unityのゲームは、わりかし現実の小劇場に近い。

モノ(GameObject)があって、そこに性質(Component)がくっついている。

そしてそれをカメラで録画、マイクで録音してゲーム画面にする。

だからUnityを学ぶということは、モノの作り方と性質のくっつけ方を学ぶことだといっていいだろう。(最初のうちは)

Unityのゲームづくりの体験

Unityの玉転がしというチュートリアルがある。

https://learn.unity.com/project/yu-zhuan-gashi?language=ja 

英語の動画だが、日本語字幕も設定できるのでご心配なく。

とりあえず指示に従ってやってみてほしい。

プログラミングについて

やってみたら、

「うーん、まあ動いたけど……自分で作れる気がしないなあ」

という気分になることだろう。

Unityのチュートリアルはすることだけを簡便に教えてくれるが、どうしてそう書くのかはほとんど教えてくれない。

Unityでは(古いバージョンを使ってるわけじゃなければ)C#という言語を使っている。

アルファベットのブワーッとよくわからないことを書いたのはこのC#でUnityに手紙を出したようなものなのだ。

コンピューターは日本語や英語をそのまま理解できるわけじゃないのでこの人工言語を使わないと話が通じないからだ。

そして、この言語を使ってコンピューターに指示を出すのがプログラミング。

だから、C#というプログラミング言語の使い方についてざっくり読めばいい。

しかし!!!!

Unityで使う場合はどちらかというと、Unityが用意した機能を覚えるほうが大事なので、本当にテキトーでいい。

変数と関数、あとif文の書き方さえわかれば今はいい。

関数については引数と返り値について理解できるとよりよい。

C#を読めるようになる

さて、上のことさえわかればさっきやった玉転がしの書いたことが実際何をやっているのかわかってくるはずだ。

例えば下のように書いてあったとしよう。

Input.GetKey("up");

と書いてあればInputというやつの持っているGetKeyという関数を呼び出して、"up"という変数を渡している。

日本語にそのまま訳すと「"上"で入力キーを得る」

でも具体的にはなにが起きるのか?

グーグル先生の出番だ。

input.getkey unity

とかで検索をかけるとUnityスクリプトリファレンスが出てくる。

説明

KeyCode 列挙体パラメーターによる key によって識別されるキーを押している間、true を返します。

キーワードが大量に出てくる。このあたりを完全に理解しようと思ったらまた検索をかければいい。

だるいなら、ざっくり文意を取ろう。

「ほにゃほにゃキーを入力していたらtrueを返す」

なーるほど、ここで入力を受け取ってるのね。

じゃあどう使われてるんじゃろうか……

と。

繰り返せば読めるようになる。

C#を書けるようになる

読めても書けない。

あるあるだ。

プログラミングではものすごく具体的にすることを書かないといけない。

「コーヒーをいれる」

ではなくて

「インスタントコーヒー粉とコップを探し、見つけたら蓋を開けてコップの中に粉を入れる。インスタントコーヒー粉の蓋を閉めて2つとも置き、ティファールを探して……」

と書いていかないといけない。

だから、

「マリオつくる」

ではなくて

「Aボタンを押すと鉛直方向上に放物線的な移動を行い、左右キーで速度上限付きの加速運動を行い……」

と書いていかないといけない。

そこまでわかればあと一歩よ。

グーグル先生の出番だ。

試しに

Unity 移動

とかで検索をかけてみよう。

あらあらあら。親切な人がいるもんだ。

このあたりを読んでみよう。

地獄みたいにいっぱい方法があることがわかる。

苦労せよ! 少年少女!


Unityは結構多機能なのでもしかしたら便利な関数がすでにあるかもしれない。

「キー入力を毎回受け取って、押し始めだけどうのこうのしたいな~」

なんて考えてたら、すでにInput.GetKeyDownがあった、みたいな。

ただ、すぐに飛びつかずにリファレンスをよく読むことだ。

作りたいものとビミョ~に違ってたり、使い方がややこしいかもしれない。

すでにあるものを自分で作っちゃうことを「車輪の再発明」というが、勉強にもなるし、自分の使いたいように改造できるので案外悪いものじゃないぞ。

プログラミングのさらなる勉強

一番いいのは自分でゲームを作ること。

しかし、どうやって開発したらいいのか全くわからず途方にくれることもあるだろう。

そんなときは別のUnityのチュートリアルを見よう。

そして、同じことを繰り返す。

「ええっ! こんな便利な関数が!?」

ってこともあるだろうし

「うわー、この書き方賢いな~」

ということもあるだろう。

コルーチンとか、絶対自分で気づかないし。

ただ大事なことが一つ。

プログラミングの闇はどこまでも続いているので、座学はそこそこに実践したほうがいいぞ!

「ゲーム」のつくりかた

プログラミングがいくら得意でも、面白いゲームが作れない人がいる。

逆に、プログラミングは最低限しかできないのに作ったゲームがすごく人気な人もいる。

ゲームはとても奥深い。

"RETRY"や"Flappy bird"のような操作が少ないものでも面白みは出る。

"スマブラ"のような操作が多いものでも直感的だから操作しやすい。

王道を突き進むゲーム制作もあれば、「やってはいけない」ことをテーマに据えた変なゲーム制作もある。

http://tonbi.jp/Game/Essay/ 

ここのようにTipsをより集めたサイトもあれば

https://www.famitsu.com/news/201804/03154881.html 

ここのようにゲーム制作の裏側を紹介するサイトもある。

どれを参考にして、どれを目指してもいい。

創作はいいぞ。