Live2D SDKを使って頭を撫でてみた
はじめに
Live2D SDK for Unity を使ってLive2Dキャラの頭を撫でるブツを作ってみました。頭辺りをドラッグするとぐりぐり動かせるのでやってみてね。
ローディングに時間がかかると思うのでその間に下記の文章を読んで時間をお潰し下さい。
やっていること
UnityにLive2D SDKをインポートしてゴリゴリやってます。UnityのインストールとかSDKのインポートなんかは割愛するとして以下のようなことをやってます。
- ・マウスをクリックしたときにドラッグ判定のフラグをON、カーソルを非表示、手のグラフィックを表示する、目を閉じる。
- ・ドラッグ時はマウス座標を取得し、頭の座標との相対位置を求めVecter3に変換する(Vector3.Scale関数を使う)
- ・上で求めたVecter3の値を元にLive2Dのパラメータを操作する。
- ・頭を撫でている手も同様に動かす
上記のような処理を、頭の辺りに設置した透明な四角のオブジェクトにアタッチしたスクリプトで実行しています。
今後の課題
- ・当たり判定オブジェクトがただの四角のスプライトなので、当たり判定用のメッシュを使うようにする(Live2Dでそういう機能がある)
- ・ドラッグを離したときに頭の位置がそのままなので元の状態に戻るようにする。
- ・マウスカーソルも手のグラフィックにする、反応できるポイントではグラフィックを変えてわかりやすくする
- ・目の開閉が一瞬なのでスピード調整できるようにする。
- ・今回頭を撫でている手はLive2Dとは別に用意したが、手もLive2Dで用意したほうがいいかもしれない。(個別に動かすのは大変だったので)
- ・操作できる箇所1つに対しての作業量が多いので共通処理みたいなのを作って作業量を減らせるようにしたい。
動かせるポイントを増やすためには1つ当たりの実装コストをできるだけ下げる必要があると思います。
WebGLビルドエラー
今回、UnityのWebGLビルドにてil2cpp.exeでエラーが出てビルド失敗するという現象が起きました。
原因はビルド時に使う環境変数で設定しているtempフォルダに日本語が入っていたためで、環境変数をいじってtempフォルダを変更したら解決しました。