UnityでLive2Dキャラクターを動かす方法:基本から実務活用まで解説
はじめに
Unityを使うと、3Dゲームだけでなく2Dのキャラクターアニメーションも扱いやすいですよね。 その際に、Live2Dという技術を組み合わせると、イラストから作成した2Dキャラクターを自然に動かすことができます。 たとえばキャラクターの瞬きや口パク、表情の変化をリアルタイムに再現することが可能です。 しかし、初めて触れる方にとっては「どうやってモデルを導入すればいいのか」「アニメーションはどのように組み込むのか」など、わかりにくい点があるかもしれません。
そこで本記事では、UnityとLive2Dを連携する方法を初心者向けにまとめます。 基本的な仕組みや活用シーンを押さえ、具体的な手順や実務での応用方法まで解説します。 イラストを動かす楽しさを体験しながら、プログラミングの基礎も身につけていきましょう。
Live2Dとは何か
Live2Dは2Dのイラストに動きを与えるための技術です。 モデリング用のソフトウェアを使い、平面的な絵からパーツを切り出し、パラメータを設定してアニメーション可能なモデルを作成します。 3Dモデルのようにポリゴンを作るのではなく、描かれたイラストをそのまま活かせる点が大きな特徴です。
イラストを描ける方にとっては、キャラクターの雰囲気を壊さずに動かせるというメリットがあります。 さらにパラメータを調整すれば、目や口、髪の毛だけでなく身体の傾きや表情変化など、細やかなアニメーションが可能です。 Unityでこのモデルを組み合わせると、ゲーム内イベントでキャラが話すシーンをスムーズに演出できるでしょう。
UnityでのLive2D活用シーン
UnityとLive2Dを組み合わせることで、たとえば次のような場面で役立ちます。 会話パートの演出や、軽快な2Dアクションゲームのキャラクターモーションなど、用途はさまざまです。
キャラクターを3Dで動かすにはモデリングやリグの作成が必要ですが、Live2Dなら2Dイラストのリソースをそのまま取り込めます。 ゲーム開発だけでなく、バーチャルYouTuberのアバターや、簡易的なアニメーション制作などでも使われることがあります。
初めにイラストからパーツ分けをする際は、髪や目、口などキャラクターの特徴を意識しながらパーツを作ると、後々の調整がやりやすくなります。
モデルの準備
Live2Dのモデルを作るには、まず対応ソフトウェアでパラメータを設定します。 たとえば、最新バージョンのLive2D Cubism Editorを使って、以下のような流れで作業を進めることが一般的です。
- イラストをパーツごとにレイヤー分けしておく
- モデリングソフトで目や口の動き、体の傾きなどに合わせてパラメータを作成する
- アニメーションに合わせてキーフレームを設定し、動きを確認する
細かい動きを作るほどパラメータ数が増えますが、その分リアルで魅力的なアニメーションが実現できます。 作成後はモデルデータを出力し、Unityにインポートして使います。
Unityプロジェクトへの導入手順
Live2D SDKのインポート
UnityでLive2Dを動かす場合、Live2D専用のSDKを導入します。 公式から配布されているUnity用のSDKをダウンロードし、Unityプロジェクトにインポートしましょう。 その後、プロジェクトウィンドウを確認すると、Live2D用のアセットやスクリプトが追加されているはずです。
モデルデータの配置
Live2Dで作成したモデルデータをプロジェクトに追加します。 モデルのフォルダにはアニメーションパラメータやテクスチャなどが含まれるため、まとめてImportすると便利です。 UnityのInspectorでモデルを選ぶと、ライブプレビューやパラメータ設定などを行える場合があります。
GameObjectの配置と設定
シーン上にLive2D用のGameObjectを作成し、そこにモデルデータをアタッチします。 すると、シーンビュー上で2Dのキャラクターが表示されます。 このとき、Unity標準の2D機能とも併用できるので、スプライトの背景やエフェクトと組み合わせて演出することも可能です。
アニメーション制御の基礎
Animatorとパラメータの連携
UnityではAnimatorコンポーネントを使ってアニメーション制御を行います。 Live2Dモデルの場合も、Animator Controllerやパラメータを設定し、ステートマシンで動きを管理する方法が一般的です。 たとえば「Idle」「Talk」「Blink」などのステートを用意し、遷移条件としてパラメータを使って制御します。
ステート間の移行は、スクリプトからパラメータを変更して行います。
実際にはC#のコードでAnimatorのSetFloat
やSetBool
を呼ぶことで、状態の変更を引き起こします。
するとLive2Dモデルのフェイシャルモーションや体の動きが切り替わり、ゲームのシーン進行に合わせたアニメーションが実現できます。
サンプルコード
以下はAnimatorパラメータを変更する簡単なコード例です。 Buttonを押したら「Talk」状態に遷移し、会話用のモーションを再生するイメージです。
using UnityEngine; public class CharacterController : MonoBehaviour { [SerializeField] Animator animator; void Update() { if (Input.GetKeyDown(KeyCode.Space)) { // "isTalking" というBoolパラメータをONにする animator.SetBool("isTalking", true); } else if (Input.GetKeyUp(KeyCode.Space)) { // 離したら OFF に戻す animator.SetBool("isTalking", false); } } }
このように、状態に応じてパラメータを操作すれば、Live2Dモデルに多彩な表情や動きを与えられます。
物理演算を使った表現
Live2Dには髪の毛や服の揺れなど、物理演算を使った表現機能があります。 たとえばキャラクターが左右に動いたとき、髪が自然に揺れるようにパラメータを設定することができるのです。
UnityのPhysicsシステムやコリジョンを組み合わせることも可能ですが、Live2Dモデル側で用意した物理パラメータをそのまま利用するケースが多いです。 すると風が吹いたり、キャラがジャンプしたりする際に、髪やスカートがリアルに揺れるような演出を簡単に取り入れられます。 これにより見た目のクオリティが向上し、プレイヤーにとっても世界観が伝わりやすくなるでしょう。
実務で活用するうえでのポイント
パフォーマンスと最適化
Live2Dモデルはテクスチャやパラメータ数が増えるほど処理負荷がかかる傾向があります。 複数のキャラクターを同時に動かす場合は、描画やアニメーションの負荷を定期的にチェックしてみてください。 無駄なパラメータやサイズの大きいテクスチャを削減するなど、負荷軽減の工夫が欠かせません。
チームでの開発フロー
実務ではイラスト担当、モデリング担当、Unityエンジニアなど、複数人で役割を分担することが多いです。 イラストのパーツ分けやLive2Dのパラメータ設計を誰が行うか、Unityでの最終的な組み込みを誰が担当するかを明確にしておくとスムーズです。 バージョン管理のためにリポジトリを用意してモデルデータとUnityプロジェクトを一括で管理すると、チーム開発がしやすくなります。
モデルとUnityプロジェクトを連携する際にフォルダ構成が複雑になりやすいです。 アセットの整理ルールをチーム全体で統一しておくと混乱を防げます。
まとめ
UnityとLive2Dを組み合わせることで、2Dイラストを魅力的なアニメーションとして表現できます。 ゲームの会話シーンやデフォルメキャラクターの動きなど、さまざまなシチュエーションで活躍するでしょう。