企画記事
【完全図解】超初心者でも大丈夫。話題のゲームエンジン「Unity」での3Dゲーム作成入門
●Index |
・UIと基本操作(物理エンジン) |
・物体を動かしてみる(スクリプト,入力処理) |
・インスタンスを生成する(プレファブ) |
・当たり判定と爆発処理 |
・敵の発生と文字表示 |
Unityは,手軽に使える本格的なゲームエンジンであるのは確かですが,まったくの初心者にはまだまだ分かりにくい部分が多いのも事実でしょう。ちょっと前のバージョンだと,起動するといきなり「Tropical Paradice」がチュートリアルとして読み込まれてしまい,途方に暮れていたものです。まあ,「これくらいは朝飯前だ」という意気込みは分かるのですが,凄すぎて初心者にはまったく参考になりません。
ここでは,スクリプト言語の基礎くらいを習得している初心者を対象に,できるだけ初期部分でつまづかないようにUnityを使ったゲーム作りについて紹介してみたいと思います。ただ,私もUnityの初心者ですので,仕様を正しく理解していないところもあるかとは思います。もっとうまい手があるという局面もあるでしょうが,そこはご容赦願います。
下準備として以下のリンクから最新版Unityのダウンロードし,インストールを済ませておいてください。
Unityのダウンロード
Unityのユーザーインタフェースと環境整備
Unity Editorの画面は複数の用途で使われる「ビュー」を組み合わせたものになっています。デフォルトの状態でも作業はできますが,画面配置は自由自在に変更できますので,使いやすいように並べてください。同時に表示しておきたいのは,
Scene(パーツの配置などで使用)
Game(実効状態の確認)
Hierarchy(オブジェクトの階層構造を管理)
Project(オブジェクトの機能を管理)
Inspector(各部の詳細情報を管理)
のビューです。デフォルト状態では,GameはSceneとタブで切り替えるようになっていますが,Unityの場合,実行ボタンを押してない状態でも実行時のイメージが常に反映されますので,同時に表示しておくほうが作業しやすいと思います。「Game」のタブ部分をマウスでつまんで適当に配置してください。
基本メニューの概要
次にメニュー周りを見てみます。
最上段のプルダウンメニューに並んでいる項目には,
File
Edit
Assets
GameObject
Component
Terrain
Window
Help
があります。「File」「Edit」「Window」「Help」については,あまり説明の必要はないでしょう。また地形用の「Terrain」ついては,ここでは割愛します。
「Assets」は,ゲームで使用されるさまざまな素材を管理する部分です。スクリプトやシェーダ,マッピング素材,Physics設定,素材をまとめたプレファブなどたくさんのものを扱います。
「GameObject」は,実際にゲーム内で使用するオブジェクトを扱う部分です。
Componentは,オブジェクトに対して付加される機能を管理する部分で,Javaでいうインタフェースに近い概念の機構です。
簡単な例で見てみましょう。
まず,起動直後の画面で(もしくは新規作成したプロジェクトで),[GameObject]メニューから,[Create Other]-[Plane]を選びます。これで平面が作られます。Gameビューには実行時のイメージが出てきます。
次に,同様な操作で,[Create Other]-[Sphere]を選択します。これで球体が追加されました。
インストール直後の状態ではメインカメラの位置とエディタの基本位置の関係で,作成したオブジェクトが視野の範囲外になってしまうことがあります。手動で位置を調整しましょう。まず,HierarchyでSphereを選択したうえで,Inspector部分を見てください。いちばん上に「Transform」の項目があります。ここの「Position」をすべて0にして,Sceneビューでもう一度球体を選択したあとに[F]キーを一度押しておいてください。エディタの中央に表示されるようになります。
球体は,Planeの少し上のあたりに持ち上げて配置しておいてください。
SceneビューでのUIの使い方
Sceneビューの使い方について少し触れておきましょう。
左上にあるボタンで移動や回転,拡大といったモードを切り替え,マウスの右ボタンを押したままドラッグすることで視点中心の回転と,だいたい触ってみれば使い方は分かると思うのですが,いくつか覚えておいたほうがよいことがあります。
まず,操作は移動モードを中心に行います。視点自体の移動には,マウスのセンターボタンを押しながらのドラッグを使うと便利です。
特定のオブジェクトを中心に持ってくるには,[F]キーを使います。多用されるキーになりますので,設定可能なマウスであれば,センターボタンに割り当てるのもよいかもしれません。
右ボタンと同時に行うドラッグ動作では視点を中心とした回転になりますが,Altキーを押しながら左ボタンでドラッグすると,先ほどのFキーで選択したオブジェクトを中心とした視点の回転が可能になります。
これでGameビューのほうにも球体が表示されたはずですが,真っ暗ですので,光源を配置しておきましょう。GameObjectメニューから,[Create Other]で今度は[Directional Light]を選択します。これは方向付きの平行光線です。配置場所はどこでも効果は変わりませんので,邪魔にならない位置に移動して,角度を適当に変えておいてください。
邪魔なので光源を移動します(動かさなくても動作に支障はありませんが) |
回転モードにし,丸い枠をつかんで向きを調整します |
ということで,物理エンジンを適用してみます。
まず,球体を選択した状態で(SceneビューからでもHierarchyビューからでもかまいません),Componentメニューの[Physics]から[Rigidbody]を選択します。これで,SphereにRigidbody(剛体)の設定が加わりました。
その効果はというと,実際に見てみるのがいちばん早いので実行ボタンを押してください(手元に開発環境を用意していない人は以下のリンクを)。
実行の様子:球体落下(1)
※サンプルはWebブラウザ上で実行されます。Unityのプラグインを導入していない人は画面の指示に従ってプラグインを入れてください。球体が落下するようになりました。
……ただ,ボテっと落ちるだけでちょっと情緒がありません。反発の設定を行いましょう。
どんな物理的挙動をさせるかというのは「Physic Material」というもので指定するのですが,どう指定すればいいか見当もつかないでしょうから,参考になるものを見てみます。Assetsメニューから[Import Package]-[Physic Materials]を選択し,すべて読み込んでください。
ここでPhysic Materialsをインポートしてきたときに,Projectビューに[Standard Assets]-[Physic Materials]というのが追加されているのが確認できると思います。ここに物理動作の素材がいくつか用意されていますので,それを参考にしつつ,今回は新しい素材を作ってみます。よく跳ねるのは「Bouncy」という奴ですが,跳ねすぎなきらいもあるのでやや弱めにしてみます。
Assetsメニューから[Create]-[Physic Material]を選択してください。
ちなみに,「Bounceness」といった文字が書いてある部分でマウスの左ボタンを押しつつ左右に動かすと,スライダーのように数値を変化させることができます。必ずしも正確な値が要求されないような部分では覚えておくと便利な操作法です。
Materialの項の右端に小さな「○」印が付いているのが見えますね(実際は真ん中に点がある○です)。この「○」印は,Unity Editorで選択ウィンドウを開くためのボタンになっています。押すとPhysic Materialsの一覧が出てきますので,先ほど作成した「Bounce2」をダブルクリックで選択してください。
この状態で実行してみると,球体が跳ねるようになったことが確認できるはずです。
実行の様子:球体落下(2)
同様な素材の割り当ての例として,色の変更を試してみましょう。
Assetsメニューから[Create]-[Material]を選択します。
ここでInspectorビューを見ると,Shaderでさまざまなものが指定できそうなことが分かるのですが,ここではもっともシンプルなDefuse(拡散反射)のままで「Main Color」を変更します。右のボックスをクリックすると色選択のウィンドウが表示されますので,赤色になるように設定してください。これで新しい色素材ができました。
これを先ほどと同様に,Sphereに割り当てます。今度は「Mesh Renderer」のMaterialsのElement 0の部分(Materialsをクリックして開くと出てきます)で「○」印を押し,素材一覧から先ほど作った素材「Red」を選択します。これで球体が赤くなりました。
色をつけるだけでいちいち素材を作るのはちょっと面倒ですが,ここで指定できるのは色だけではありません。さまざまなシェーダやマッピングが指定された素材を登録しておけば,今回と同じ手順で指定できますので,素材感を出したい場合には大いに活用してください。
実行中のSceneエディット
先ほどから実行ボタンを押すと,Gameビューだけでなく,Sceneビューでもリアルタイムにオブジェクトが動いているのが確認できるはずです。
ここで,実行後にSceneビュー内のSphereを選択してみましょう。Unity Editorでは,ゲームが動作した状態でも,ここで自由に大きさを変えたり,変形させたりといったことができるのです。Gameビューにも変更内容がリアルタイムに反映されていることが分かります。
ついでに,球体が落下したり,つまんで位置を動かすと,InspectorのTransform部分もリアルタイムに変化することを確認してください。ここで「プログラムから,SphereのTransformのPositionを書き換えると,位置を変更できるんだな」と目星をつける人もいるかもしれません。そのとおりです。Inspectorでは,オブジェクトの属性がそのまま表示されており,その値を操作することで,オブジェクトを制御できます。
- 関連タイトル:
Unity
- この記事のURL:
キーワード