【Unity】SDクエリちゃんを動かす! 
2015/06/10 Wed [edit]
SD 版がいつの間にか出てたのね。さっそく試してみようと思ったら、歩行スクリプトが無かった…(ver.1.1.0 時点)。
とりあえず1から作るのは大変なので、通常版のスクリプトを改造して作ってみた。
といっても、基本的には使用しているコンポーネントを SD 用に入れ替えただけだけなので、通常版をダウンロードしたことがある人は、元の歩行スクリプト「QueryLocomotionController.cs」を自分で改造しても良いだろう。作り方は「QueryLocomotionController.cs」を「QuerySDLocomotionController.cs」などにリネームして、コード内で使っているクラス名や定数を、MonoDevelop などテキストエディタで、以下のように、通常版用からSD版用に変更するだけだ([Ctrl - H] で全置換するとラク)。面倒な人はサンプルをダウンロードして使って欲しい。
●スクリプト内で変更するクラス名や定数名
通常版用 | SD版用 |
---|---|
QuerySoundController | QuerySDSoundController |
QueryChanSoundType | QueryChanSDSoundType |
QueryMechanimController | QuerySDMecanimController |
QueryChanAnimationType | QueryChanSDAnimationType |
QueryChanAnimationType.IDLE | QueryChanSDAnimationType.NORMAL_IDLE |
それでは、さっそく試してみよう。
1.まず新しいプロジェクトを作ったら、クエリちゃんのオフィシャルサイト(http://www.query-chan.com/)の「DATA DOWNLOAD」のリンクから「クエリちゃん SD版モデル DOWNLOAD」を押し、AssetStore へ移動して、モデルをインポートする。

2.とりあえず動き回れる床を作りたいので、「GameObject」メニューから「Plane」を作ろう。床のテクスチャなどは通常版のときの方法と同じように適当で良い。ここでは「PQAssets>Query-Chan-SD>Textures」にある「bg_player.png」を使っている。ちょっとタイリングの模様が綺麗に繋がってない気もするが、テストなのであまり気にしない(笑)。

3.次に、SDクエリちゃんの 3Dモデルを配置する。プロジェクトエクスプローラで「PQAssets>Query-Chan-SD>Prefabs」を開くといくつかモデルが入っているので、好きなものをヒエラルキーにドラッグ&ドロップしよう。今回は「Query-Chan-SD」を置いてみた。またこのままだと真っ暗なので、「GameObject」メニューから「Directinal Light」を適当に置く。設定は適当で構わない。


4.それから、カメラがちょっと遠いのと、カメラは固定でクエリちゃんが画面からはみ出たりすると見えなくなってしまうので、カメラをキャラに追従させたい。超簡単な方法は「Main Camera」を「Query-Chan-SD」(名前はモデルによる)の子要素にしてしまう方法だ。ヒエラルキーで「Main Camera」を「Query-Chan-SD」にドラッグ&ドロップして、カメラの位置を調整するだけで良い。こうするとクエリちゃんと一緒にカメラも動く。ここではアングルを正面からにしてみた。



5.移動するにはいくつかコンポーネントが必要だ。先ほど作った(またはダウンロードした)スクリプト「QuerySDLocomotionController.cs」をヒエラルキーに置いたプレファブ「Query-Chan-SD」に追加しよう。ヒエラルキーで「Query-Chan-SD」を選択して、メニューから「Component>Scripts(>QueryChanSD)」で「Query SDLocomotion Controller」を追加する。

6.更に「Character Controller」も必要だ。メニューから「Component>Physics>Character Controller」で追加しよう。設定は自由で構わないが「Center」の「Y」だけは調整して置かないと、床にめり込む(笑)。

7.これで動くには動いたが、残念ながらアニメーションしないので、滑ってる感じになってしまう。これは Animator が移動用のものになってないためだ。これも通常版から拝借して、SD 用に改造しよう。作り方はアニメーター「PQchan_Movement.controller」を「PQchanSD01_Movement.controller」などにリネームし、各ステートのアニメーションクリップをSD 用に変更するだけだ。今回はノーマルコスの「SD_QUERY_01」(ファイルは PQAssets>Query-Chan-SD>SD_QUERY_01>Models>SD_QUERY_01.fbx)のアニメーションクリップを各ステートに設定している。以下に設定例を上げておく。自分の好きに設定しても良いだろう。選択したモーションによっては、遷移のタイミングなど多少調整しておいた方が良いかもしれない。作るのが面倒な人はサンプルをダウンロードして使って欲しい。
●設定したアニメーションクリップ(PQchanSD01_Movement.controller)
ステート | Motion |
---|---|
002_Idle | 0004_Idle (~/SD_QUERY_01.fbx) |
003_Walk | 0002_Walk (~/SD_QUERY_01.fbx) |
WalkBack | 0002_Walk (~/SD_QUERY_01.fbx) |
004_Run | 0003_Run (~/SD_QUERY_01.fbx) |
005_Jump | 001_Jump (~/Human_Female_A.fbx) または、0008_Win (~/SD_QUERY_01.fbx) など |

●001_Jump ムービークリップでの Jump → Walk の遷移はタイミングを少し前へずらした方が良い

8.アニメーターが用意できたら、モデルに設定しよう。ヒエラルキーから「Query-Chan-SD>SD_Query_01」(末尾の番号はモデルによる)を選択して、インスペクターで「Animator>Controller」を「QueryChanSDAnimController」から「PQchanSD01_Movement」に変更する。これでアニメーションするようになったと思う。とりあえずシーンを適当な名前で保存して、動きを確かめてみよう。


9.動かして見ると、歩行は上手くいくのだが、ジャンプ(スペースキー)すると「IndexOutOfRangeException: Array index is out of range.」というエラーが出る。これは通常版の歩行スクリプトにはジャンプしたときボイスが再生されるからで、SD 版にはそのボイスが入ってないからだ。原因がわかれば、修正する方法は2パターンある。1つは歩行スクリプト「QuerySDLocomotionController.cs」内のサウンド機能の呼び出しを無効にする方法と、もう1つは通常版のボイスフォルダ(PQAssets>Query-Chan>Sounds>Voice)から wav ファイル(音声ファイル)を持ってきて、設定する方法だ。
10.ボイスを無効化する場合は、MonoDevelop などテキストエディタで「QuerySDLocomotionController.cs」を開き、「PlayJumpSound」を検索しよう([Ctrl - F])。見つけたら、その関数内の「PlaySound()」の行をコメントアウトする。これでエラーは出なくなる。

11.また、通常版からボイスを持ってきたい場合は、通常クエリちゃん(「PQAssets>Query-Chan>Sounds>Voice>02_Shouts」)から「Go_Ahead.wav」(いきますよ!)と「One_Two.wav」(せーの!)をインポートしよう(自分の好きなボイスでも構わない)。再生させるにはヒエラルキーからモデル「Query-Chan-SD」を選択して、インスペクターで「Query SD Sound Controller(Script)」の「Sound Data」の▼を開き、「Size」にとりあえず「31」と入れて、Enter を押す。すると Element 項目が設定できるようになるので、「Element 19」に「Go_Ahead」、「Element 30」に「One_Two」を設定する。どうやらジャンプするたびランダムで再生されるようだ。「QuerySDLocomotionController.cs」内の配列「jumpSounds」に追加して増やしても良いだろう。その場合は、先ほどの Element(番号) への設定も必要になる。ちなみに Element の番号はスクリプト「QuerySDSoundController.cs」内に定義されている(MonoDevelop で jumpSounds 内の ONE_TWO など定数にカーソルを当て、[F12]を押せば参照できる)。


細かい調整は各自でやるとして、とりあえずはこれで完成だ。目パチをつけたい人はこちらの記事を、アニメーションの調整などはSDユニティちゃんの記事を、WebTemplate などを使いたい人はユニティちゃんの記事などを参考にしてみて欲しい。
(関連記事)
【Unity】【C#】SDクエリちゃんを目パチさせる
【Unity】【C#】SDクエリちゃんを飛行させる!
【Unity】クエリちゃんを動かす!
【Unity】SDユニティちゃんを動かす!
【Unity】【C#】ユニティちゃんをサクっと簡単に動かす!
【Unity】プロ生ちゃんを動かす!
【Unity】SDプロ生ちゃんを動かす!
【Unity】【C#】SmoothFollow に回転アングルと距離の遠近機能を付けてみる
【Unity】【C#】FPS(フレームレート)をリアルタイムに測定して表示するv2(4隅選択可能で、画面サイズの変更にも対応版)

- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/181-2d14a598
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |