10/4(Fri)
2019年6月03日 15:59 更新
ーー目次ーー
1.実践で学ぶUnityの基本操作!
2.Unityとは/何が出来るのか
3.Unityがなぜ流行っているのか/そのメリットとは
4.Unityを使ったゲーム開発-基本操作を学ぶ-
かいせつ先輩
ずっと卒業しない先輩。なんでもわかりやすく解説するのが趣味。
とある宇宙人スキュー
地球にやってきた宇宙人。地球のことをもっと学びたい。なぜか関西弁。
かいせつ先輩
この授業では、ゲームをゼロから作ってみたいと思う人を対象に、「Unityを使ったゲーム開発」について学ぶよ!受講を通して、Unityの基本的な使い方や特徴を理解していることを目的としているよ。
第1回目は、Unityの基本操作、Unityのオブジェクト配置、Unityの物理シュミレーション、について話すね。
Unityの操作やオブジェクトをゲーム上に配置する方法については、今後の制作全てにかかわる基本的な内容になるんだ。そして、簡単に物理シミュレーションを実装できるのが、Unityの大きな特徴だから、それを使ってみるね。
荒川 巧也 日本工学院専門学校ゲームクリエイター科教員
日本工学院専門学校ゲームクリエイター科教員。学校ではUnityやUnreal Engineなどの授業を担当しており、学生のゲーム制作の管理なども行っています。「Unity5入門」(共著)などの書籍執筆経験あり。
とある宇宙人スキュー
最近プログラミングをやりたくて。調べていたら「Unity」って出てきたんやけど、これって何のことやろ?
かいせつ先輩
Unityとは、Unity technologiesというサンフランシスコに本社がある会社が提供するゲームエンジンと言われているものなんだ。
ゲームを作るお仕事をしている人以外でも3Dのものだったら何でも作れるから、使い方によっては例えば建築のシミュレーションだったり教育のコンテンツだったりとか、あとは広告なんかにも使われているし、色んな分野に使われてるんだよ。
とある宇宙人スキュー
なるほろ〜。じゃぁ、Unityはどんな特徴があるんやろか?
かいせつ先輩
いい質問だね!Unityの特徴は下のようなことかな。
・個人であれば「無料」で利用可能。
・使いやすい。[エディターとマシンの要求スペック]
・マルチプラットフォーム対応
・上記1,2,3の理由からユーザーが多い。
→情報が集めやすい(Web上の情報や書籍の充実)
個人もしくは一千万円以下の規模の組織であれば無料で利用することが可能なんだ。
すべて無料でプロと同じ環境を使うことが出来るんだよ。
一般的なパソコンがあれば十分使えるから本当に始めやすいし、Unityで作ったものは、ワンクリックでiOSやAndroid、PCへといろんなプラットフォームに展開できるんだ。
これらの理由からユーザーがとても増えていて、検索したときに情報が集めやすいのも理由の1つだね。
以上の理由からUnityは今とても流行っているんだよ。
かいせつ先輩
ここでは、授業内で先生が教えてくれた、Unityの説明について紹介するよ!
受講生代表:Unityのエディターと基本操作についてお願いします。
荒川先生:実際にUnityを立ち上げてお話しさせていただきたいと思います。
まずは各Viewについて細かくお話しさせていただきます。
まずSceneと書かれたところなんですが、これが実際の編集画面になっています。
そしてHierarchyと書いてあるところなんですが、ここはゲームの世界に配置されているオブジェクトが一覧表示されているViewになっています。
そして下のProjectと書いてあるところは、まだ配置はしていないけど今後配置するかもしれないモデル素材だとか音楽素材、あとは画像素材だったりとか、ゲームに使うための素材をすべて入れておくようになっています。
Inspectorと書いてあるところは各オブジェクトのパラメーターで、特徴などが表示されています。この辺に関しては実際に作業をしていただくと各役割は分かりやすいかなと思います。
そしてSceneの横にGameと書かれたタブがあると思うんですが、これはGameViewといいまして、実際のゲーム画面になります。
実際のゲームはこんな感じで写っていますよというのを確認できるViewになっています。
受講生代表:ありがとうございます。
荒川先生:ここからオブジェクトの配置というところになってきます。
Unityのファイルを作ると何もしてない状態で既にDirectional LightというものとMain Cameraというものが必ずエディター内に入った状態でファイルが作られます。
そもそもこれはなんぞやという話なんですが、まずDirectional Lightというのがゲームの世界の太陽になります。
なので機能をオフにするとゲームの世界の状態が暗くなっちゃいます。
もう一つですね、Main Cameraというのがありましてこのカメラってなんぞやって話なんですが、今私が箱を出してみますとゲームの世界に箱が写っていると思うんですが、Main Cameraというのがこの箱を映しているからゲーム画面に写っているような状態になっています。
なのでUnityのゲーム作りのイメージとしては、テレビとか映画と同じように(プレイヤーとかエネミーとかアイテムコインだとかを)カメラの前に配置してゲームを作っていくような感じになります。
受講生代表:じゃあイメージはテレビや映画と同じような感じになるんですね。
荒川先生:そうですね。
ここから実際にゲームを作ってみたいと思います。まず最初にステージを配置してみたいと思います。
Hierarchyと書いてある下に小さくCreateボタンがありまして、Createの3D ObjectのCubeで箱を出します。
受講生代表:CreateのCubeですね。
荒川先生:はい。そうすると箱が出てくるのでこれをステージとして使いたいと思います。
まず最初に、ステージにするにあたって大きさを変えたいと思います。
Inspector ViewのCubeをStageという風に名前を変えます。
そして大きさも変えます。
大きさの変え方なんですが、TransformのScaleというのがありますので、XYZが 1、1、1になってるんですが今日は仕様通りにやりますと Xが40のZが40という形で打ってもらうとステージが出来上がります。
そしてステージができたんですが、真っ白なのもちょっと寂しいので色をつけてみたいと思います。
Projectと書いてあるところのCreateボタンを押していただいて、そうするとMaterialというのがありますんでポチッと押すと、New material という形で出てきます。
名前はなんでもいいんですけど、Stageとかって名前にしておきます。
出来ましたらStageを選択してAlbedoの隣の白いところを押すとカラーピッカーが出てきますので、好きな色にしてもらったらいいかなと思います。
色の付け方ですが、Scene Viewになっていることを確認してもらって、Objectにドラッグアンドドロップで持って来てもらうと、簡単に色がついちゃいます。
色が付いてステージができたんですが、このままだとちょっと寂しいので次は家でも配置したいなと思います。
配置の方法なんですが、ステージ上に持ってきてもらうと出てきます。
大きさを調整します。
ハウスが選択されてるのを確認しまして、Scaleの値を確認していただいて全部0.01にして行きます。
Transformというのがありますので移動させてもらってもいいですし、ハウスを選択してもらって positionの値を変えると位置が移動しますので好きなところに調整して置いてみてください。
続いて、キャラクターの素材を置きたいと思います。
Models フォルダの直下にクエリちゃんというキャラクター(ポケットクエリーズさんという Unity を使ったゲーム会社さんがあるんですが、今回特別に使用許可が飛びましたので)を使ってGameを作ってみます。
クエリちゃんを配置するんですが、家を配置したのと同じように好きなところに配置してもらえれば OK かなと思います。
位置が調整できたら、このキャラクターに当たり判定をつけていきます。
皆さんおそらく何らかのゲームやったことあると思うんですけど、敵に当たったとかっていうのをUnityではColliderというComponentを使って実装していきます。
なのでクエリちゃんにもComponentをつけたいと思います。
クエリちゃんを選択してもらいまして、Inspector ViewのAdd ComponentというところからPhysics のCapsule Colliderというのを追加します。
これで当たり判定がつくんですが、この状態では問題がまだありまして、よく見てもらうと足元にしか当たり判定できてなくて、しかも半分ステージに当たり判定がめり込んじゃってるという状態ですのでこの当たり判定の位置と大きさを調整したいと思います。
Capsule Colliderの Yの値を0.78、height を1.74にしてみたいと思います。
これで当たり判定の実装ができたというわけです。
次はカメラの位置を調整したいと思います。
ゲーム画面を見るとクエリちゃんが写ってないので、調整したいと思います。
好きなところに配置してると思うので、カメラを移動させていただきまして、カメラプレビューで確認ができますので、好きなところに配置してみてください。
次はクエリちゃんを実際に動かせるようにしたいと思います。
クエリちゃん選択しているのを確認してもらいまして、Add ComponentのNew ScriptからC Sharpもしくは JavaScriptでプログラムを書くことができます。
今日はC Sharpで書いてみます。
スタート関数はゲームを再生して一回だけ読み込まれることを書くようになっています。
例えばキャラクターの特徴だったりとか何か設定がある場合はスタートの括弧の中にスタート関数で書くのが一般的で、アップデートの括弧の中は毎フレームキャラクターを動かすだとかはずっと読み込まれないといけないので、そういったことをやるようになっています。
ファイルからセーブしてエディターに戻ると、キーボードの矢印キーで動くと思いますので確認してみてください。
このままだと問題がありまして、家に入れちゃうんですよ。
当たり判定を家の方にもつけないといけないんですが、クエリちゃんに当たり判定をつけたのと同じようにつけてみてください。
次は物理シミュレーション、物が落ちるというところをやってみたいと思います。
3D Objectの、Sphere(球体)を追加します。
これに重力をかけて下に落としたい場合どうするかと言うと、プログラムだけでやろうとするとプログラムの知識+力学とかの知識が必要です。
UnityだとAdd ComponentのPhysicsから、Rigidbodyを追加します。
追加できたら再生すると、これだけで物が落ちます。
古典力学の重力とかと同じようなものに基づいてシュミレーション出来ていますので、すごい簡単に摩擦とかも再現できますし、リアルな再現ができるということになります。
せっかくなのでクエリちゃんにも重力を加えておきたいと思います。
Rigidbody付けられたら、RigidbodyのConstraintsというところ開けてもらいまして、XとZにチェック入れておいてください。
クエリちゃんの当たり判定ってよく見ると丸まっていると思うんですが、この状態で重力かけると前に転がったり横に転がったりしちゃうんですよ。
なので回転をしないように制限をかけている感じです。
ここまでできたら、あるエリアに入ったら玉が下に落ちるみたいな仕掛けを作ってみたいと思います。
HierarchyのCreateボタンを押して、Create EmptyのTrigger Objとかっていう名前にします。
追加できたら、クエリちゃんが入ってきたっていう判定用の当たり判定をつけておく必要がありますので、Add ComponentのPhysicsのBox Colliderを追加します。
何か物が入ってきた時に、入ってきたというのを感知するためにIs Triggerにチェックを入れておきます。
もしチェックをいれなかったら中に入れないんですよ。
当たり判定と当たり判定がぶつかって中に入れないんですけど、 Is Trigger にチェックを入れているとトリガーとなって中に入れて、物が落ちるというような仕掛けが作れるわけです。
ゲームによってはある地点に入ったらムービーが流れるとかってあると思うんですけど、そういう使い方もします
ここまで出来ましたら、仕掛けを作るためにプログラムを書いてみたいと思います。
Trigger Objが選択されているのを確認していただいてNameをObj With Rigidbodyとかにしておいて、言語は C Sharpで追加、ダブルクリックで中を開きます。
荒川先生:use Gravity(重力)を最初に false にしといて、物が入ってきたら trueにすることによってかけて落とすみたいなすごくシンプルな内容になっています。
読み込みできますとObj With Rigidbodyがnoneという形でパラメーター出てきます。
ここに落としたい対象であるSphereをドラッグ&ドロップで追加しておきます。
Unityのプログラムの特徴として、Publicにした変数はエディター上に出てきます。
ゲームだったりとかコンテンツってスピードを早くしたいとかゲームによって攻撃力も少し上げたいとかってあると思うんですけど、エディター上でスピードの調整ができたりとか敵の攻撃力変えたりとかを簡単にできるというところも Unity の大きな特徴になっています。
実際にゲームを作っていると、エディター上でゲームを再生して確認が出来るという形ですごく効率的に作れるかなと思います。
本日のまとめとしては 、Unityとは個人であれば無料で試すことができて、しかもマルチプラットフォーム。
そして使っている人が多いからいろんな情報が簡単に手に入るよというところをお話しさせていただきました。
そしてエディターの各Viewの説明をさせていただきました。
色んなエディター内に役割がそれぞれあってゲームを作っていくというところになります。後はそのエディターを使ってオブジェクトの配置をさせていただきました。
最後に物理シミュレーションということで、キャラクターが動いて玉が下に落ちてくるというところを実際に見ていただいたような感じになります。
受講生代表:先生ありがとうございました。
かいせつ先輩
ここでは、「Unityを使ったゲーム開発」から授業を受けた方の質問とそれに対する回答を紹介していくよ!
A.プログラミングに関しては特に理数系の知識は全く不要だと思います。
英語の文法を覚えるみたいな感じで、C Sharpの文法を覚えればできてしまうので問題ありません。
ただ、例えばキャラクターをジャンプさせるとかという風になると、三角関数とかが必要になってきますので理数系の知識が必要になってくるんですが、 そういうことをあまり詳しく知らなくてもできるようになっていますので、 Unity に関しては問題ないかなと思ってます。
インターネットを調べてもらうと色んな情報がありますので、もし興味あれば是非始めて欲しいなと思います。
A.両方教えているので心苦しくはあるんですけど、Unityであれば色んな情報がすぐ手に入るところでUnityがいいかなと思います。
Unreal Engineはファイナルファンタジーだとかドラゴンクエストとかを作っているようなエンジンなので、やっぱりグラフィックとかに強みがあるんですが、その分マシンスペックとかもかなり要求されるので、ゲーミングPCのデスクトップを持っていないと動かないということもありますので、ゲームを作りたいということであればUnityから入ってもらうのがいいかなと思います。