こんにちは。
湯江なおです。
今日はLive2dで服を脱がすパラメータ設定ができました。
上記画像のように、可動部分は水色の手をつけてアニメーションさせたいのですが、
同じ水色の手を複数の可動部位で使うときの正攻法ってなんなのでしょうか
live2d上で、1つのパーツを複数パラメータに適用するとうまく行かないので
今のところ可動部位の数、パーツを複製しています
Unityに入れて動かせるようにしたいのですが、
マウスドラッグで動かすコンポーネントの修整が大変かもしれないです。
なぜ大変なのかは明日の記事にでも。。。
今日はプレイできるURLの更新はありません。。。
~~~以降おさわりゲー作りたい方 or Unity+Live2d開発者向け~~~
「おさわりパラメータコントローラ編(1)」
※指摘等のコメントお待ちしてます
前回はCubismParameterのValueプロパティをいじれば、Live2Dのパラメータが動きそうってところまでいきました。
さて、マウスドラッグしたらマウスパラメータを動くようなコンポーネントを作りましょう。
今のコンポーネントはゴテゴテしちゃってて説明に向かないので、、要点だけ下に抜粋
MyMotionController : MonoBehaviour, IPointerDownHandler,...
public float decay;
private CubismParameter destination { get; set; }
private float acceleration { get; set; }
private Vector3 firstClickPos { get; set; }
public void OnPointerDown(PointerEventData data)
{
firstClickPos = Camera.main.ScreenToWorldPoint(data.position);
}
public void LateUpdate()
{
destinations.Value -= decay
if (Input.GetMouseButton(0))
{
Vector3 targetPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//現在はY軸のみの距離を取り出す
acceleration = (targetPos.y - firstClickPos.y) * accelRatio;
destinations.Value += acceleration;
}
}
流れとしては以下
①クリックした最初の点を記録(EventSystemから取得)
②ドラッグ中の現在の点を記録(Input.mousePositionから取得)
③2つの点の距離からパラメータの変動値を生成し、適用
そのままだとパラメータが上がりっぱなしになります。
魔理沙の口のように、ドラッグを離すとパラメータを減少させたい場合はdecayを設定します
上記を作る点としてハマった点として、
EventSystemから取れるドラッグ値を最初使おうとしたのですが
これはドラッグする間にポインターが移動するたびに、EventSystem に呼び出されます。
➾マウス押しっぱにしてポインタを動かさない状態では、EventSystemから呼び出されません!
しょうがないので、最初のクリックのみEventSystemから呼び出してもらい、
ドラッグしているかどうかはInput.GetMouseButton(0)から持ってきます。
PixivFANBOXのブログはこんな感じで前半日記、後半制作物解説みたいな感じでやっていこうかと思います。
いつかqiitaとかにまとめたいですね
以上です