Live 2D에서 그려진 캐릭터를 드래그(스쳐)하면 입자가 나옵니다.

6788 단어 Live2DUnity

개요


캐릭터에 라이브 2D SDK를 넣은 Sample App1을 드래그해보면 파티가 나온다.
Live2D_SDK_Unity_2.0.08_1_jp/sample/SAmple App1을 개조 및 제작합니다.
※ 아래 설명은 드래그와 스치기를 스치기로 통일

개발 환경

  • Live2D_SDK_Unity_2.0.08_1_jp
  • Unity 5.0.1f1
  • 완성된 DEMO



    방법


    PlatformManager.cs 및 LAppView.cs 편집,
    모형의 그리기 모드를 바꾸고 스치기 등 처리를 하며 입자를 설정합니다.

    모델의 드로잉 모드 변경하기


    입자가 표시될 때 Live 2D 모델이 맨 앞에 나타나는 문제를 피하기 위해
    렌더링 모드를 변경합니다.
    sample/PlatformManager.cs
    public ALive2DModel loadLive2DModel(string path){
        // -- 省略 --
        live2DModel.setRenderMode(Live2D.L2D_RENDER_DRAW_MESH); //追加
        return live2DModel;
    }
    

    공정에 입자 추가


    Partical System을 선택하여 입자 시스템을 생성합니다.
    Inspector 설정은 다음과 같습니다.

    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();
    }
    
    

    좋은 웹페이지 즐겨찾기