プレイヤーの3Dモデルを美少女キャラに変更する
前回 の記事で敵のクマを複数体に増やしましたが、今回はプレイヤーの3Dモデルを美少女キャラに変更したいと思います。私が以前作ったゲーム「ユニティちゃんバズーカ」ではユニティちゃんの3Dモデルを使いました。ユニティちゃんはUnity Technologiesが制作したオープンソース系ヒロインです。ゲームに使用することができる3Dモデルやプロの声優による音声ファイル等が提供されています。
参考
ユニティちゃん
今回は「プロ生ちゃん」の3Dモデルを使用してみます。プロ生ちゃんはニコニコ生放送のプログラミング生放送コミュニティのキャラクターです。ユニティちゃん同様、3Dモデルのほかにプロの声優による音声ファイルも提供されています。
参考
暮井 慧(プロ生ちゃん)3D モデル Unity パッケージ公開!
それでは、プロ生ちゃんの3DモデルUnityパッケージをダウンロードします。
プロ生ちゃん3Dモデルをダウンロード&セットアップする
以下のニコニ立体URLにアクセスしてダウンロードボタンをクリックします(図1 ) 。
図1
ダウンロードしたpronama-chan.zipを解凍してファイルPronamaChan.unitypackageをダブルクリックします。するとImportting packageダイアログが表示されるので[Import]ボタンをクリックします(図2 ) 。
図2
するとProjectに[PronamaChan]というフォルダが追加されます。この時点で以下のようなエラーが表示される場合があります。
Blender could not be found.
Make sure that Blender is installed and the .blend file has Blender as its 'Open with' application!
拡張子 .blend がBlenderのプログラムに関連づけられていないというエラーです。
これはプロ生ちゃん3DモデルのファイルにモデリングソフトのBlenderのファイルが入っているため、BlenderをインストールしていないPCだと出力されるエラーです。ゲームの開発には関係ないので、この連載ではエラーを無視します。エラーを解決したいという方は、以下の記事を参考にしてください。
参考
[Unity 3D] Blender could not be found.を解決するには
続いて、PronamaChan/Prefab/pronamachanをHierarchyにドラッグアンドドロップします。
プロ生ちゃんUnityモデルのデフォルトのサイズはクマに比べてとても大きいので大きさを調節します。Hierarchyの[pronamachan]を選択し、Inspectorの「Transform」ー「Scale」のX、Y、Zに「0.4」を入力します(図3 ) 。
図3
プロ生ちゃんモデルにアニメーション情報を追加する
Hierarchyのpronamachanを選択した状態で、Projectの/Controller/BazookaをInspecterの「Animator」ー「Controller」にドラッグアンドドロップします(図4 ) 。この操作によって、アニメーション情報がプロ生ちゃんモデルに付与されます。
図4
プロ生ちゃんモデルにスクリプトを設定する
次に、Projectの/Script/BazookaをHierarchyのpronamachanへドラッグアンドドロップします(図5 ) 。この操作によって、プロ生ちゃんをキーボードやマウスで操作するスクリプトが設定されます。
図5
続いてpronamachanの「Tag」をPlayerにします。まずHierarchyの[pronamachan]をクリックします。そしてInspectorの「Tag」で[Player]を選択します。これにより、プロ生ちゃんモデルのオブジェクトのタグがPlayerになります。
図6
Unityにはオブジェクトにタグ付けする機能があり、スクリプトからタグ名をキーにしてオブジェクトを検索することができます。このゲームではHierarchyのMain Cameraに設定されているThirdPersonCamera.csの中でこのタグが使われています。このスクリプトはカメラをプレイヤーキャラの後ろから追尾させる処理をしています。その際にプレイヤーキャラのオブジェクトを取得する処理でこのタグを使っています。つまり、このスクリプトはタグ名だけに依存しているので、3Dモデルを入替えても“ Player” というタグがついているものであればどんな3Dモデルでもカメラで追尾させることが可能です。Unityにはこのようなコンポーネントの独立性を高め、再利用可能な設計をサポートする機能がたくさんあります。
プロ生ちゃんモデルにバズーカを追加する
pronamachanに設定したBazookaスクリプトのパラメータ設定をU_Character_REFの設定と同様にします。U_Character_REFは元々のプレイヤーキャラです。まずHierarchyの[U_Character_REF]の横にある三角形をクリックします。するとU_Character_REFの階層が展開されます。展開された[U]を右クリックして[Duplicate]を選択します(図7 ) 。
図7
するとUがコピーされます。コピーされたほうのUをpronamachanにドラッグアンドドロップします(図8 ) 。
図8
Uはバズーカの3Dオブジェクトです。pronamachanの[U]をクリックします。Inspectorの「Transform」に以下の値を入力します(図9 ) 。
Position
X: 0.2068235
Y: -0.09891701
Z: 1.232018
Rotation
X:0
Y: 0
Z:0
Scale
X: 2.5
Y: 2.5
Z: 2.5
この数値を入力すると元のプレイヤーキャラの肩の上にあったバズーカがプロ生ちゃんの肩の上に移動されます。数値入力のほかにマウスで移動させることもできます。
図9
プロ生ちゃんモデルに張り付けたスクリプト(Bazooka.cs)のパラメータを設定する
続いてHierarchyの[U_Character_REF]をクリックします。Inspectorの「Bazooka(Script)」ー「Target A」をクリックします。すると、HierarchyのTeddyの階層が展開されてBip001/Bip001 Pelvis/Bip001 Spine/Bip001 Spine1が黄色く表示されます。これは黄色く表示されたオブジェクトが「Bazooka(Script)」ー「Target A」に設定されていることを表しています。スクリプトに設定されているオブジェクトがどこにあるかを探す時にはこの操作を覚えておくと便利です。
図10
この黄色く表示されたオブジェクトをpronamachanの「Bazooka(Script)」ー「Target A」にドラッグアンドドロップします(図11 ) 。この操作によりBazooka.csスクリプトからクマオブジェクトを参照することができるようになります。
図11
続いてHierarchyの[pronamachan]をクリックします。Hierarchyのpronamachanを以下のように展開します。
[pronamachan]ー[U]ー[joint_Char]ー[joint_TorsoB]ー[joint_TorsoC]ー[joint_Neck]ー[joint_Head]ー[Bazoo]
このBazoo以下のオブジェクトをBazooka(Script)に設定していきます。
Hierarchyの[pronamachan]をクリックして、先ほど展開したBazooとその下にあるLeft Handle, Right Handle, SpawnをInspectorの「Bazooka(Script)」の同名の項目にドラッグアンドドロップします(図12 ) 。この操作によりBazooka.csスクリプトからバスーカオブジェクトを参照することができるようになります。Bazooka.csはこの参照を使ってバズーカを打つ操作をした際にバズーカを前後に動かしています。
図12
続いて、Hierarchyの[Bullet]をpronamachanのInspectorの「Bazooka(Script)」ー「Bullet」にドラッグアンドドロップします(図13 ) 。この操作によってBazooka.csスクリプトがバズーカの弾オブジェクトを参照することができます。バズーカを発射する際に弾オブジェクトを複製する処理で使用されます。
図13
これでプロ生ちゃんの設定が完了です。元のプレイヤーモデルU_Character_REFは不要となったので削除します。[ U_Character_REF]を右クリックして[Delete]を選択します(図14 ) 。
図14
それではゲームを実行してみましょう!
図15
プロ生ちゃんを動かすことができるようになりました! 手順は多少ありましたが、コーディングなしでキャラクターモデルを変更することができました。
いかがだったでしょうか? Unityを使えばキャラクターを変えても簡単に既存のプログラムが流用できることがお分かりいただけたのではないでしょうか? 次回はバズーカの弾が当たった時に爆発エフェクトを発生させる処理を追加します。お楽しみに!