one's way blog

ワクワクを生み出せるWebエンジニアを目指して。

はじめてのUnity | 3Dゲームを作る基礎編

f:id:seintoseiya:20160220101732j:plain
基礎編と書いたけど、続きがあるかはわかりません。
最近、Web以外のプラットフォームでの開発も興味があって困ってます。
Unityは描画部分はGUIで基本的なものは簡単に作れるし、ロジックはJavaScriptが使えるので入りやすかったです。
今回はダウンロードから基本的な使い方まで。

環境

  • Unity5.3.2

ダウンロード・インストール

公式サイトから無料版のインストーラをダウンロード。
ゲームやモバイルアプリのクロスプラットフォーム開発用の強力な 2D、3D、VR、AR ソフトウェア。
インストールにはUnityのアカウントを作成する必要あり(無料)。
画面に従ってインストール。
Unityが起動できたら準備完了。

プロジェクトの作成

FileからNew Projectを選択し、3Dを選択して、任意の名前でプロジェクトを作成します。
f:id:seintoseiya:20160220015645p:plain

構成

Unityのプロジェクトでは以下のような構成でゲームを作成していきます。
Project (Game全体)
∟ Scene (シーン)
 ∟ GameObject (シーン内のオブジェクト)
  ∟ Component (オブジェクトの情報)
∟ Assets (共通部品)

画面の見方

先ほどの構成と照らし合わせて確認できます。
f:id:seintoseiya:20160220094932p:plain
①Scene
②GameObject
③Component
④Assets
⑤GameView(プレビュー画面)

開発の流れ

Scene(スタート画面、ゲーム画面、ゲームオーバー画面など)を作って、
GameObject(プレイヤー、敵、障害物など)を作成して、
Component(大きさ、重力など)を設定する。
適宜、Assetsから共通部品(色、画像、Scriptなど)を作成してGameObjectに付与していく。

Sceneの作成

最初は無名のSceneが立ち上がってるはずなので、それを名前を付けて保存すればOK。
新たにSceneを作成する場合は、FileからNew Sceneを選択して、適当な名前で保存。
f:id:seintoseiya:20160220100711p:plain

GameObjectの追加

GameObjectメニューからか、Hierarchyタブの部分のCreateボタンから様々なオブジェクトを生成することができます。
例ではCubeを生成しました。
f:id:seintoseiya:20160220100743p:plain

Sceneパネルの操作方法

f:id:seintoseiya:20160220100344p:plain
①視点の操作(ショートカットキー:Q)
②オブジェクトの移動(ショートカットキー:W)
③オブジェクトの回転(ショートカットキー:E)
④オブジェクトの拡大縮小(ショートカットキー:R)
また視点の操作は⑤でも可能で、Shift+真ん中の□をクリックするといい感じの視点になる。

Componentを設定する

GameObjectを選択して、Inspectorパネルの中の値を変更します。
ここで配置や傾き、大きさ、重力、エフェクトなど色々コンポーネントをオブジェクトに追加できる。
f:id:seintoseiya:20160220100831p:plain

Assetsでマテリアルを作る

オブジェクトに色などを付けたい場合は、まずAssetsでマテリアルを作る必要が有ります。
Assetsパネル上で右クリック-Click-Materialを選択してマテリアルを作成します。
マテリアルを選択してInspectorパネルから色を設定したら、マテリアルをGameObjectにドラッグアンドドロップすれば色が適用されます。
f:id:seintoseiya:20160220100850p:plain

また、逆にGameObjectをAssetsにドラッグして、再利用可能なオブジェクト(Prefabというらしい)として登録しておけば便利です。

GameViewパネルの小技

Sceneパネルで表示されている画面は編集用で実際のゲーム時はカメラからの視点で動かされる。
Sceneパネルで見ている視点にカメラを持って行きたい場合は、カメラオブジェクトを選択して、GameObjectメニューからAlign With Viewを選択することでカメラが移動され、SceneパネルとGameViewパネルの視点が合わさる。

Sceneの再生

Sceneパネル上部の再生ボタンを押せばSceneを再生できますが、今のままでは何も動きのない画面です。
Cubeに重力なんかを付けて確認してみるとわかるかと思います。
重力を付けるにはAdd Componentボタンから、Physics-Rigidbodyで物理特性を付与します。

Scriptの作成

GameObjectに対して、アニメーションを付けたり、キーボードから何か操作したりする際は、Scriptを書く必要があります。
UnityではC#, JavaScript, Booという言語が使えますが、今回はJavaScriptを使います。
Assetsパネルで右クリック-Create-JavaScriptを選択するとファイルが生成されます。
f:id:seintoseiya:20160220101038p:plain
まずはScriptとGameObjectの紐付けをしなければいけませんが、ScriptをGameObject上にドラッグアンドドラップするだけでOKです。

次にScriptをダブルクリックして中身を編集します。
デフォルトで以下のソースの様になっているかと思います。

#pragma strict

function Start () {
// 最初に一回だけ処理

}

function Update () {
// 毎フレーム実行される処理

}

例えばこれを、最初にlogを出して、毎フレームx軸に0.1進む様にするには以下の様にします。

#pragma strict

function Start () {
// 最初に一回だけ処理
Debug.Log("Start");
}

function Update () {
// 毎フレーム実行される処理
transform.position.x += 0.1;
}

Sceneの切り替え

ゲーム画面からゲームオーバ画面への切り替えなどでSceneの切り替えが必要になる時があると思います。
2つのSceneを作ったら、1つ目のSceneのScript上でなんらかの条件によって、2つ目のSceneに切り替える様にします。
例えばあるGameObjectのx軸が、10を超えたらGameOverという名前のSceneに切り替えるには以下の様にします。

#pragma strict

function Start () {
// 最初に一回だけ処理
Debug.Log("Start");
}

function Update () {
// 毎フレーム実行される処理
transform.position.x += 0.1;

if(transform.position.x > 10){
Application.LoadLevel("GameOver");
}
}

また、複数のSceneを使う際にはFile-Build SettingからSceneを登録する必要があります。
とは言ってもドラッグアンドドロップするだけです。(順番はGameOverが下に来る様にしてください)
f:id:seintoseiya:20160220101322p:plain

Projectの書き出し

最後に書き出しですが、Build Settingの画面でPlatformを選択して、
Build and Runボタンを押下すれば、アプリケーションを作成して実行されます。
PlatformはスマホやWebなどありますが、PCアプリなら特に設定等いらない様です。