はじめに
Live2D使って嫁とイチャイチャするのは楽しいです!
Live2Dでよりインタラクティブな表現をするために、
ドラッグよりも前、つまりマウスオーバーでモデルがグリグリ動いてくれたら楽しそうですよね!!
ということで実現してみます。
※前提としてSDKのsample/SampleApp1にコードを追加する形で実装しています
※また、frameworkやsample以下のファイルは触らず、別のスクリプトを作成してアタッチすることとします
サンプルコード
以下のファイルを作成して、HierarchyのLive2D_Canvas_Haruへアタッチするだけです。
特に解説することはないかと思いますが、
Start()内でモデルを取得して、マウスオーバーした時にTouchesMoved(Vector3 inputPos)に今のマウスカーソルの位置を渡しているだけです。
LAppModelの中とLAppViewの中のTouchesMoved(Vector3 inputPos)を利用しています。
追記:マウスが離れた時や、クリックした時にモーションを再生させるために修正しました
MouseChecker.cs
using UnityEngine;
using System.Collections;
public class MouseChecker : MonoBehaviour {
private LAppModel model;
// Use this for initialization
void Start () {
model = GameObject.Find("Live2D_Canvas_Haru").GetComponent<LAppModelProxy>().GetModel();
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonUp(0))
{
//ちょっと無理やりかも…
model.TouchesEnded(Input.mousePosition);
}
}
void OnMouseEnter()
{
model.TouchesBegan(Input.mousePosition);
}
void OnMouseOver()
{
model.TouchesMoved(Input.mousePosition);
}
void OnMouseExit()
{
model.TouchesEnded(Input.mousePosition);
}
}