##はじめに
Unityでゲームを作る際、
自作のキャラクターをUnityの空間上で走り回らせたいとお考えの方へ
私もネットで調べて、候補となるツールのバリエーションに圧倒され、
**「結局どれを使えばいいんだ!」**と悩みました
そのため、各作業ごとのオススメのツール(無料)を紹介しながら、
実際に動き回るところまで説明していきたいと思います。
最短で自作キャラをUnity上で動かすには、
Unityの「Humanoid」型のモデルを作成するのが手っ取り早いです。
「Humanoid」型のモデルとは特定の骨を持つモデルのことで、
この骨格を持つモデルを作成することで、AssetStoreから取得したモデル(ユニティちゃんなど)のアニメーションを自作キャラクターに反映させることができます。
要は上記画像の「2.骨入れ」を決まった形で作成することで、
「3.アニメーションの作成」をすっ飛ばすことができます。
今回はこの方法で最速で作成をしていきます。
##モデル作成
選択肢が多いモデル作成について、作りたいもの別に3種類紹介します。
今回はSCULPTRISを使用してモンスターをつくていきたいと思います。
今回使用しないツールについては、参考リンクを貼っておきます。
・VRoid
「VRoid Studio」で作った3Dモデルを「Unity」で踊らせてみよう
・123D CATCH
[友人をスマホで撮影して3Dモデル化してUnityで動かしてみた]
(https://yandod.github.io/blog/2015/02/01/123d-blender-unity/)
##モデル作成(SCULPTRIS)
直感的に作業を行えるため、深くは説明しません。
紹介・インストール方法が記載されているここを参考に、
思い思いのキャラクターを作ってみましょう。
最後にデータをエクスポートして完了です。
ここを参考に、.obj(モデルデータ)・.png(テスクチャーデータ)を保存しましょう。
公式ガイドは以下です
Sculptris Alpha6 日本語ガイド
##骨入れ
上記モデル作成でどのツールをしようしたとしても、骨入れ作業はBlender一択になります。
Blenderでは骨入れ以外にもモデル作成など、様々なことができるそうなので詳しくはこちらをみてください。
インポート・位置調整
基本的にはこちら参考に進めてください。
1.ファイルから、インポート > Wavefront(.obj)を選択
2.Cubeを削除し、Amatureを選択・下の箱のアイコンをクリックし、位置情報の表示
3.青(上下)・赤(左右)・緑(前後)の矢印をスライドさせ、足の裏が赤緑の面にちょうどくっ付くように調整
テスクチャの適用は行う必要ありません、これで準備は完了です。
###骨入れ
基本的にはこちら参考に進めてください。
1.Shift + a でメニューを表示、アーマチェア > 単一ボーンを選択
2.Amatureを選択した状態で、レントゲンオプションをオンにする
3.参考リンクを参照に骨入れをする
(<重要>骨の数と名前を一致させてください)
5.ファイルから、エクスポート > FBX(.fbx)を選択肢し、指定フォルダに保存
##Unityでの作業
AssetStoreからモーションデータを取得し、モデルに設定しましょう。
1.AssetStoreから「Unity-Chan Model」をインポート
2.右グリックでCreate > Animator Controllerを選択し、
作成したコントローラーをダブルクリック
3.開いたウィンドウ上で右クリック、Create State > Emptyを選択
4.Inspecterから名前を「Run」などに変更し、Motionを選択
※今回はUnity-Chanの「RUN00_F」を使用します
5.もう一度Stateを作成し、Inspecter上で編集
※Stopと名付けて、「POSE01」を設定します
6.AnimatorウィンドウでParametor上でBoolを選択し、run変数を作成
※アニメーションの状態遷移を切り替える変数を作成します。
7.先ほど作ったRunとStopをそれぞれ右クリック、Make Transitionを選択し、
InspecterのConditionsを画像の通り設定
※run変数が指定した状態になるとアニメーションが切り替わる仕組みです。
9.以下のスクリプトを作成し、モデルに設定
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Model : MonoBehaviour
{
private Animator animator;
// Use this for initialization
void Start () {
animator = GetComponent<Animator>();
}
// Update is called once per frame
void Update () {
if (Input.GetKey("up")) {
transform.position += transform.forward * 0.05f;
animator.SetBool("run", true);
} else {
animator.SetBool("run", false);
}
if (Input.GetKey("right")) {
transform.Rotate(0, 10, 0);
}
if (Input.GetKey ("left")) {
transform.Rotate(0, -10, 0);
}
}
}
##まとめ
sculptrisでキャラクターを作成するのに最初は時間がかかると思いますが、
慣れれば、この一連の作業で1時間かからずに終わると思います。
今回はAnimationをAssetStoreのものを使用しましたが、
Blenderを使えば自作アニメーションも作れます!
VtuberやVRChatなど遊びの幅も広がると思うので、ぜひ試してみてください!