LoginSignup
6
5

More than 5 years have passed since last update.

Live2Dで描画したキャラの上でドラッグ(フリック)するとパーティクルがでるようにしてみた

Last updated at Posted at 2015-05-13

概要

Live2D SDKに入っているSampleApp1にキャラの上でドラッグ(フリック)するとパーティクルがでるようにしてみた.
Live2D_SDK_Unity_2.0.08_1_jp/sample/SampleApp1を改造して作成する.
※以下説明ではドラッグとフリックをフリックに統一

開発環境

  • Live2D_SDK_Unity_2.0.08_1_jp
  • Unity 5.0.1f1

完成するDEMO

スクリーンショット 2015-05-13 23.38.14.png

作り方

PlatformManager.csとLAppView.csを編集し,
モデルの描画モード,フリックなどの処理を変更,パーティクルの設定をする.

モデルの描画モードを変える

パーティクルを表示するときにLive2Dモデルが最前面に出てしまう問題を回避するために,
RenderModeを変更する(UnityのAPIで非推奨のものを利用している.

sample/PlatformManager.cs
public ALive2DModel loadLive2DModel(string path){
    // -- 省略 --
    live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH); //追加
    return live2DModel;
}

パーティクルをプロジェクトに追加

Hierarchy > Create > Particle Systemを選択してパーティクルシステムを作成.
Inspectorは以下のように設定した.
スクリーンショット 2015-05-13 23.30.22.png

LAppViewのメンバに以下を追加

sample/LAppView.cs
    ParticleSystem ps;

LAppViewのコンストラクタに以下を追加

sample/LAppView.cs
    ps = GameObject.Find("Particle System").GetComponent<ParticleSystem> ();

フリックイベントの修正とパーティクルの操作

sample/LAppView.cs

// タッチ中
public void TouchesMoved(Vector3 inputPos) 
{
    // -- 省略 --
    Camera c = GameObject.Find("Main Camera").GetComponent<Camera>();

    dragMgr.Set(x, y);
    const int FLICK_DISTANCE = 100;// この値以上フリックしたらイベント発生

    // フリックイベントの判定
    if (touchMgr.IsSingleTouch() && touchMgr.IsFlickAvailable())
    {
        ps.Play();
        ps.transform.position = c.ScreenToWorldPoint(new Vector3(inputPos.x,inputPos.y, 0));

        float flickDist = touchMgr.GetFlickDistance();
        if (flickDist > FLICK_DISTANCE) {
            float touchPos_plane2x2_X = touchPos_onPlane.x * 2 - 1;
            float touchPos_plane2x2_Y = -touchPos_onPlane.y * 2 + 1;
            model.FlickEvent(touchPos_plane2x2_X, touchPos_plane2x2_Y);
            //touchMgr.DisableFlick(); //コメントアウト
        }
    }
    // -- 省略 --
}

// タッチ終了
public void TouchesEnded(Vector3 inputPos)
{
    // -- 省略 --
    touchMgr.DisableFlick();
    ps.Stop();
    ps.Clear();
}

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5