今回はUnityでゲームを作る前に、Unityでキャラクターを動かすのが結構簡単に出来てしまうという事を見ていきましょう。
キャラクターを操作する為には、
- 3Dのキャラクターモデル
- 3Dのキャラクターにボーンが設定されている
- 3Dのキャラクターのアニメーション
- キーボードを押した時に移動する為のプログラム
が必要になりますが、もうこれを考えるだけで疲れちゃいますね・・・。
が!
Unityではこれが5分とかからず出来てしまいます。
わたくし一人だったら一生かかっても最初から出来ません、作れません・・・・。
Unityでのキャラクター操作に5分かからない理由とは?
キャラクターを動かすまでに5分とかからない理由はそれらがすでに用意されているからです。
それがアセット(資産)という仕組みです。
アセットは3Dキャラクターや音声、スクリプト等があり、有料or無料で使用出来ます。
キャラクターの操作に関するアセットは標準(Standard Asset)で用意されているのでそれをインポートするだけです。
キャラクターのインポートと操作をやってみる
下の画像を見てください。
メニューの左から3番目のAssets→Import Package→Charactersを選択します。
そうすると下の画面がポップアップで表示されるので
「Import」をクリックします。
最終的に上のようにProjectウインドウのAssetsの表示エリアにインポートしたCharactersを含むStandardAssetsのフォルダが表示されます。
これでキャラクター操作に関してのAssetがインポート出来ました。
StandardAssetsがインポートできない場合はUnityメニューのWindow→Asset Storeを選択し、検索窓に「standard asset」等で検索して出てきたアセットをダウンロード&インポートするという方法もあります。
それではキャラクターをシーンに設置して操作してみましょう。
シーンとは場面でありここにキャラクター等を設置しゲームの世界を作っていきます。
プロジェクトはゲーム全体、シーンは個々の場面という感じです。
プロジェクトの中にいくつものシーンを組み合わせて作成していく事でひとつのゲームが出来上がります。
例えば、タイトルのシーン、ゲームのシーン、ゲームオーバーのシーンを組み合わせて1つのプロジェクトになります。
ではインポートしたキャラクターをシーンに設置してみます。
フォルダを次のように辿っていきます。
Assets→Standard
Assets→Characters→ThirdPersonCharacter→Prefabs
その中のThirdPersonController.prefabが3Dキャラクターにアニメーションやスクリプトを設定済みであるプレハブ(オブジェクトみたいなもの)になります。
正しくはプリファブ?(^_^;)
上画面のようにThirdPersonController.prefabをシーンにドラッグ&ドロップして配置をします。
シーンに配置をする事でそのプレハブがインスタンス(実体化したもの)となります。
設置したインスタンスの名前を「takasi」と変更しておきます。
オブジェクト指向言語を勉強した方はオブジェクトやインスタンスという用語はよく見聞きしていると思いますが、
オブジェクトがひな形でインスタンスは実体となります。
オブジェクトはひな形なので同じものを大量生産する時に便利です。
例えば、
人間というプレハブ(オブジェクト)があってそれをシーンに設置して「たかし」という名前を設定するとたかしはインスタンス(実体)となります。
その為、人間プレハブをもうひとつシーンに配置すると「たかし」とは別のインスタンスになります。
では上の画面のようにUnityの再生ボタン(プレイボタン?)を押してみましょう。
ゲームのテストプレイが出来ます。
が・・・・、
キャラクターが表示されたと同時にグングン下に落ちていきます・・・底なし沼へ・・・・。
これはThirdPersonController.prefabに重力が設定されているからです。
普通の人間であれば重力がかかるのは当たり前なので、問題があるのは地面がないことです。
というわけで地面を作ります。
上の画面のようにしてヒエラルキー上で
右クリック→3D Object→Cubeを選択し床を作成します。
そうすると上画面のようにキャラクターに重なるように四角形の箱が表示されます。
まずはCubeという名前で表示されているので、名前を「yuka」と変更します。
名前の変更の方法は
変更するアイテムを選択し→右クリック→Rename
変更するアイテムを選択し→F2キーを押す
の二通りの方法があります。お好みの方法で名前を変更してください。
「yuka」は地面として設置したいので人間より大きく、そして下に表示するように変更します。
その為に「yuka」を選択しそのインスペクタを見て値を変更します。
インスペクタで数値を指定する方法の他にSceneタブのゲームオブジェクトを選択している状態でオブジェクトをドラッグで全方向に移動させたり、表示されている色つきの矢印をドラッグする事でその軸の方向にだけ移動する事も出来ます。
オブジェクトの移動方法に関しては

も参照してください。
上の画面と同じように
PositionのYを-2
ScaleのXを10、Zを10
に変更します。
これでSceneの画面を見ればわかるとおり「yuka」の上にキャラクター「takasi」が表示されます。
「takasi」の位置は初期値から変更していないのでPositionはX:0 Y:0 Z:0となっています。
Xは横軸、Yは縦軸、Zは奥行きを表しています。
Unityでの前方はZ軸の正の向きになります。
また値は現実世界のメートル、つまり1であれば1メートルという事になります。
とりあえずこれでキャラクターと地面の設置と設定が終了しました。
プレイボタンを押して試してみましょう。
キーボードの↑↓←→またはA S D Wで移動、Spaceキーでジャンプの操作が出来ます。
(設定をいじっていない場合)
上画面のように(宙に浮いていて画面上は動いてないけれど・・・)床の上をキャラクターが動き回る事が出来ます。
床を外れると底なし沼に落ちるのは床がない時と同じです。
Unityを使ってみて思う事
わたくしがUnityで初めてこれらを試した時は「すご!」と思いました。
3Dゲームを作ること自体がものすごくハードルが高くて自分には無理と思っていましたから・・・。
無料でここまでの事が簡単に出来てしまうんですねぇ・・・(^^)/。
とりあえずここまでのプロジェクトとシーンを保存しておきましょう。
Fileメニューの「Save Scene」と「Save Project」を実行で保存出来ます。
シーンはAssetsフォルダに保存されます。
ゲームを作っていくといろいろなファイルが増えてくるので、ファイル管理もフォルダを作って、しっかりとやっていったほうがいいです。
フォルダの作り方は
上画面のように
ProjectタブのAssetsフォルダで右クリック→Create→Folderを選択します。
作ったフォルダの名前を「scene」に変更して、先ほど保存したシーンを「test1」として保存し、ドラッグしてsceneフォルダ内に移動させておきます。
という事で今回は終了。
次回は当たり判定に関して何か書くかもしれません。