Beispiel #1
0
    void OnRenderObject()
    {
        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            live2DModel.draw();
            return;
        }

        // motion播完或是flag改變
        if (motionMgr.isFinished() || mtnBehaviour.changeflg == true)
        {
            // load motion
            motion = Live2DMotion.loadMotion(motionFile.bytes);
            // 播放motion
            motionMgr.startMotion(motion);
            // 設置flag為off
            mtnBehaviour.changeflg = false;
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
        live2DModel.draw();
    }
    void Update()
    {
        live2dModel.setMatrix(transform.localToWorldMatrix * live2dCanvasPos);
        if (l2dMotionManager.isFinished())
        {
            StartMotion(0, 1);
        }
        else if (Input.GetKeyDown(KeyCode.Space))
        {
            StartMotion(14, 2);
        }
        l2dMotionManager.updateParam(live2dModel);

        Vector3 pos = Input.mousePosition;

        drag.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        live2dModel.setParamFloat("PARAM_ANGLE_X", 30 * drag.getX());
        live2dModel.setParamFloat("PARAM_BODY_ANGLE_X", 10 * drag.getX());
        live2dModel.setParamFloat("PARAM_EYE_BALL_X", -drag.getX());
        live2dModel.setParamFloat("PARAM_EYE_BALL_Y", -drag.getY());
        drag.update();

        long time = UtSystem.getUserTimeMSec();

        physicHairSide.update(live2dModel, time);
        if (Input.GetKeyDown(KeyCode.Space))
        {
            motionIndex = (motionIndex + 1 >= expressionMotions.Length ? 0 : motionIndex + 1);
            //expressionMotions[motionIndex].setLoop(true);
            motionQueueManager.startMotion(expressionMotions[motionIndex]);
        }
        motionQueueManager.updateParam(live2dModel);
        live2dModel.update();
    }
    void OnRenderObject()
    {
        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            live2DModel.draw();
            return;
        }

        if (motionMgr.isFinished())
        {
            motionMgr.startMotion(motion);
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
        live2DModel.draw();
    }
Beispiel #4
0
    void Update()
    {
        Vector3 targetPos   = target.transform.position;
        Vector3 myPos       = transform.position;
        Vector3 relativePos = targetPos - myPos;

        transform.rotation = Quaternion.LookRotation(relativePos);
        transform.Rotate(new Vector3(-75, 180, 0));
        Vector3 pos = transform.position;

        pos.y = 81;
        this.transform.position = pos;
        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }

        if (motionMgr.isFinished())
        {
            motionMgr.startMotion(motion);
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
    }
Beispiel #5
0
    // Update is called once per frame
    void Update()
    {
        model.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        motionQueueManager.updateParam(model);
        eyeBlinkMotion.setParam(model);

        model.update();
        if (GameManager.Instance.isGameOver)
        {
            return;
        }
        if ((missCui.transform.position.x - transform.position.x) < 3)
        {
            GameManager.Instance.isGameOver = true;
            GameManager.Instance.isCatched  = true;
        }
        if (isDefeat)
        {
            transform.position = Vector3.Lerp(transform.position, initPos, 0.1f);
            Destroy(gameObject);
        }
        else
        {
            transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
        }
    }
Beispiel #6
0
 /// <summary>
 /// カメラがシーンにレンダリング後に呼ばれる
 /// </summary>
 void OnRenderObject()
 {
     if (live2DModel == null)
     {
         return;
     }
     live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
     // アプリが終了していた場合
     if (!Application.isPlaying)
     {
         live2DModel.update();
         live2DModel.draw();
         return;
     }
     // 再生中のモーションからモデルパラメータを更新
     if (motionManager != null)
     {
         motionManager.updateParam(live2DModel);
     }
     // ポーズの設定
     if (pose != null)
     {
         pose.updateParam(live2DModel);
     }
     // 物理演算の設定
     if (physics != null)
     {
         physics.updateParam(live2DModel);
     }
     // 頂点の更新
     live2DModel.update();
     // モデルの描画
     live2DModel.draw();
 }
Beispiel #7
0
    // Update is called once per frame
    void Update()
    {
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        motionQueueManager.updateParam(live2DModel);
        eyeBlinkMotion.setParam(live2DModel);

        live2DModel.update();
        if (GameManager.Instance.gameOver)
        {
            return;
        }
        //判断当前Boss是否追赶上翠花
        if ((missCui.transform.position.x - transform.position.x) < 3)
        {
            GameManager.Instance.gameOver = true;
        }

        if (isDefeat)
        {
            transform.position = Vector3.Lerp(transform.position, initPos, 0.2f);
        }
        else
        {
            transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
        }
    }
Beispiel #8
0
    void Update()
    {
        if (live2DModel == null)
        {
            load();
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        if (!Application.isPlaying)
        {
            live2DModel.update();
            //motionManager.updateParam (live2DModel);
            return;
        }

        /*
         * var pos = Input.mousePosition;
         * if (Input.GetMouseButtonDown(0))
         * {
         * //
         * }
         * else if (Input.GetMouseButton(0))
         * {
         * dragMgr.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
         * }
         * else if (Input.GetMouseButtonUp(0))
         * {
         * dragMgr.Set(0, 0);
         * }
         */


        dragMgr.update();
        live2DModel.setParamFloat("PARAM_ANGLE_X", dragMgr.getX() * 30);
        live2DModel.setParamFloat("PARAM_ANGLE_Y", dragMgr.getY() * 30);

        live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", dragMgr.getX() * 10);

        live2DModel.setParamFloat("PARAM_EYE_BALL_X", -dragMgr.getX());
        live2DModel.setParamFloat("PARAM_EYE_BALL_Y", -dragMgr.getY());

        double timeSec = UtSystem.getUserTimeMSec() / 1000.0;
        double t       = timeSec * 2 * Math.PI;

        live2DModel.setParamFloat("PARAM_BREATH", (float)(0.5f + 0.5f * Math.Sin(t / 3.0)));

        eyeBlink.setParam(live2DModel);

        if (physics != null)
        {
            physics.updateParam(live2DModel);
        }

        if (motionManager.isFinished())
        {
            StartCoroutine(FadeModel(0, 1));
        }
        live2DModel.update();
        motionManager.updateParam(live2DModel);
    }
Beispiel #9
0
    void Update()
    {
        if (motion == null)
        {
            return;
        }

        motionMgr.updateParam(modelComponent.model);
    }
    private IEnumerator Routine_Main()
    {
        while (true)
        {
            while (true)
            {
                if (live2DModel == null)
                {
                    break;
                }
                live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

                if (!Application.isPlaying)
                {
                    live2DModel.update();
                    break;
                }

                if (motionMgr.isFinished() || main != _State)
                {
                    //歩き
                    if (_State == EnemyState.Walk)
                    {
                        motionMgr.startMotion(motions[0]);
                    }
                }

                if (main != _State)
                {
                    //噛みつき
                    if (_State == EnemyState.Attack)
                    {
                        motionMgr.startMotion(motions[1]);
                    }
                    //怯み
                    else if (_State == EnemyState.Stop)
                    {
                        motionMgr.startMotion(motions[2]);
                    }
                    //停止
                    if (_State == EnemyState.Wait)
                    {
                        motionMgr.startMotion(motions[3]);
                    }
                }

                main = _State;

                motionMgr.updateParam(live2DModel);
                live2DModel.update();
                live2DModel.draw();

                yield return(null);
            }
            yield return(null);
        }
    }
Beispiel #11
0
 private void OnPostRender()
 {
     if (live2DModelUnity == null)
     {
         return;
     }
     live2DModelUnity.setMatrix(base.transform.localToWorldMatrix * live2DCanvasPos);
     if (!IsStop || isOneDraw)
     {
         motionMgr.updateParam(live2DModelUnity);
         live2DModelUnity.update();
         live2DModelUnity.draw();
         isDrawed = true;
         if (motionMgr.isFinished() || isOneDraw)
         {
             isOneDraw = false;
         }
     }
 }
Beispiel #12
0
 // 아무것도 하지 않을 때에 실행할 모션은 무작위로 재생한다
 void Idle()
 {
     // 현재의 모션이 끝난 상태라면
     if (m_motionMgr.isFinished())
     {
         // 난수를 생성한다
         int rnd = UnityEngine.Random.Range(0, m_motions.Length - 1);
         // 모션 재생
         m_motionMgr.startMotion(m_motions[rnd]);
     }
     m_motionMgr.updateParam(m_live2DModel);
 }
Beispiel #13
0
 //全局监听(步骤函数)
 private void Motion()
 {
     /*******表情更新*******/
     if (Input.GetKeyDown(MTN_DW))
     {
         motionIndex++;
         if (motionIndex >= motions.Length)
         {
             motionIndex = 0;
         }                                                      //出顶反底
         else if (motionIndex < 0)
         {
             motionIndex = motions.Length - 1;
         }                                                     //触底反弹
         motionQueueManager.startMotion(motions[motionIndex]); //队列更新
     }//表情下翻
     if (Input.GetKeyDown(MTN_RESET))
     {
         motionIndex = 0;
         motionQueueManager.startMotion(motions[motionIndex]);
     }//表情重置
     if (Input.GetKeyDown(MTN_UP))
     {
         motionIndex--;
         if (motionIndex >= motions.Length)
         {
             motionIndex = 0;
         }                                                      //出顶反底
         else if (motionIndex < 0)
         {
             motionIndex = motions.Length - 1;
         }                                                     //触底反弹
         motionQueueManager.startMotion(motions[motionIndex]); //队列更新
     }//表情上翻
     if (Input.GetKeyDown(EyeballTraceMoveMent))
     {
         this.flag_Eyeball = !flag_Eyeball;
     }
     //眼球跟踪
     /*-*/
     motions[motionIndex].setLoopFadeIn(true);
     motions[motionIndex].setFadeOut(modelAnimationFadeOut);
     motions[motionIndex].setFadeIn(modelAnimationFadein);
     motions[motionIndex].setLoop(true);
     //以上动画的更换方式(*过渡)
     motionQueueManager.updateParam(live2DModel);
     //更新队列
     /*******表情更新*******/
 }
Beispiel #14
0
    void Update()
    {
        if (modelUnity == null)
        {
            return;
        }
        modelUnity.setMatrix(transform.localToWorldMatrix * matrix4X4);

        if (queueManager.isFinished())
        {
            queueManager.startMotion(dMotion);
        }
        queueManager.updateParam(modelUnity);
        modelUnity.update();
    }
        void Update()
        {
            if (live2DModel == null)
            {
                return;
            }
            live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

            if (!Application.isPlaying)
            {
                live2DModel.update();
                return;
            }


            if (motionMgr.isFinished() || main != _State)
            {
                //歩き
                if (_State == Main.CharaState.Walk)
                {
                    live2DModel.setParamFloat("Param3", -1);
                    live2DModel.setParamFloat("Param7", 0);

                    motionMgr.startMotion(motions[0]);
                }
                //走り
                else if (_State == Main.CharaState.Run)
                {
                    live2DModel.setParamFloat("Param3", -1);
                    live2DModel.setParamFloat("Param7", 0);

                    motionMgr.startMotion(motions[1]);
                }
                //停止
                if (_State == Main.CharaState.Wait)
                {
                    //live2DModel.setParamFloat("Param3", -1);
                    motionMgr.startMotion(motions[2]);
                    //motionMgr.stopAllMotions();
                }
            }

            main = _State;

            motionMgr.updateParam(live2DModel);
            live2DModel.update();
            live2DModel.draw();
        }
Beispiel #16
0
    void Update()
    {
        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }


        if (motionMgr.isFinished() || main != _State2)
        {
            //歩き
            if (_State2 == Enemy2State.Walk)
            {
                motionMgr.startMotion(motions[0]);
            }
        }

        if (main != _State2)
        {
            //噛みつき
            if (_State2 == Enemy2State.Attack)
            {
                motionMgr.startMotion(motions[1]);
            }
            //怯み
            else if (_State2 == Enemy2State.Stop)
            {
                motionMgr.startMotion(motions[2]);
            }
            //停止
            if (_State2 == Enemy2State.Wait)
            {
                motionMgr.startMotion(motions[3]);
            }
        }


        motionMgr.updateParam(live2DModel);
        live2DModel.update();
        live2DModel.draw();
    }
    private KrLive2DLipSync m_pLipSync              = null;                 // process for lip sync

    //:::::::::::::::::::::::::::::::::::::::::::::::::::::
    // UNITY FUNCTION
    //:::::::::::::::::::::::::::::::::::::::::::::::::::::
    // @Brief : Update
    void Update()
    {
        // Update motion parameter
        m_pIdleMotionManager.updateParam(m_pLive2dModel);
        m_pMotionManager.updateParam(m_pLive2dModel);

        LipSync();

        m_pLive2dModel.update();

        // Render type is Live2D.L2D_RENDER_DRAW_MESH
        if (m_pLive2dModel.getRenderMode() == Live2D.L2D_RENDER_DRAW_MESH)
        {
            m_pLive2dModel.draw();
        }
    }
Beispiel #18
0
    void Update()
    {
        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }

        if (motionMgr.isFinished())
        {
            motionMgr.startMotion(motion);
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
    }
Beispiel #19
0
    void Update()
    {
        float     modelWidth = live2DModel.getCanvasWidth();
        Matrix4x4 m1         = Matrix4x4.Ortho(
            0, modelWidth, modelWidth,
            0, -50.0f, 50.0f);
        Matrix4x4 m2 = transform.localToWorldMatrix;
        Matrix4x4 m3 = m2 * m1;

        motionManager.updateParam(live2DModel);
        if (live2DModel == null)
        {
            return;
        }

        live2DModel.setMatrix(m3);
        live2DModel.update();
    }
Beispiel #20
0
    void Update()
    {
        if (motionMgr.isFinished())
        {
            motionMgr.startMotion(motion);
        }

        for (int i = 0; i < NUM_MODELS; i++)
        {
            var live2DModel = models[i];
            if (live2DModel == null)
            {
                continue;
            }

            motionMgr.updateParam(live2DModel);

            live2DModel.update();
        }
    }
    void Update()
    {
        if (motions == null || motions.Length == 0)
        {
            return;
        }

        if (!EventSystem.current.IsPointerOverGameObject())
        {
            if (Input.GetMouseButtonDown(0))
            {
                startClickTime = Time.realtimeSinceStartup;
            }

            if (Input.GetMouseButtonUp(0) && Time.realtimeSinceStartup - startClickTime < dragWaitSeconds)
            {
                NextMotion();
            }
        }

        if (motionMgr.isFinished())
        {
            if (running)
            {
                if (loop)
                {
                    motionMgr.startMotion(motions[currentMotionIndex]);
                }
                else
                {
                    running = false;
                }
            }
            else
            {
                return;
            }
        }
        motionMgr.updateParam(modelComponent.model);
    }
Beispiel #22
0
    void Update()
    {
        //if (Input.GetButtonDown("Fire1"))
        //{
        //    motion = Live2DMotion.loadMotion(mtnFiles[2].bytes);
        //    //motion.setLoop(true);
        //    motionManager.startMotion(motion, false);
        //    Debug.Log("Fire1");
        //    //motionoff = true;
        //}
        //if (Input.GetButtonDown("Fire2"))
        //{
        //    motion = Live2DMotion.loadMotion(mtnFiles[1].bytes);
        //    //motion.setLoop(true);
        //    motionManager.startMotion(motion, false);
        //   // motionManager.stopAllMotions();
        //    Debug.Log("Jump");
        //   // motionoff = true;
        //}


        float     modelWidth = live2DModel.getCanvasWidth();
        Matrix4x4 m1         = Matrix4x4.Ortho(
            0, modelWidth, modelWidth,
            0, -50.0f, 50.0f);
        Matrix4x4 m2 = transform.localToWorldMatrix;
        Matrix4x4 m3 = m2 * m1;

        motionManager.updateParam(live2DModel);
        if (live2DModel == null)
        {
            return;
        }
        //live2DModel.setParamFloat("PARAM_WEAPON01", 1.0f);
        live2DModel.setMatrix(m3);
        live2DModel.update();
    }
Beispiel #23
0
    void Update()
    {
        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }
        if (motionMgr.isFinished())
        {
            SetMotion(Live2DMotion.loadMotion(motionFiles[0].bytes));
        }

        //double t = (UtSystem.getUserTimeMSec() / 1000.0) * 2 * Math.PI;
        //live2DModel.setParamFloat("PARAM_MOUTH_OPEN_Y", (float)(2 * Math.Sin(t / 0.5)));

        //Debug.Log(live2DModel.getParamFloat("PARAM_MOUTH_OPEN_Y"));
        motionMgr.updateParam(live2DModel);

        //live2DModel.setParamFloat("PARAM_MOUTH_OPEN_Y", (float)(2 * Math.Sin(t / 0.5)));
        //Debug.Log(live2DModel.getParamFloat("PARAM_MOUTH_OPEN_Y"));
        /*先播放mtn文件,再setParamFloat,不然会被mtn文件覆盖*/
        if (!GameParam.isTalkEnd)
        {
            //Debug.Log(GameParam.amplitude);
            live2DModel.setParamFloat("PARAM_MOUTH_FORM", (float)1f);
            live2DModel.setParamFloat("PARAM_MOUTH_SIZE", (float)0.8f);
            live2DModel.setParamFloat("PARAM_MOUTH_OPEN_Y", (float)GameParam.amplitude);
        }
        live2DModel.update();
    }
Beispiel #24
0
    void Update()
    {
        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }

        if (motionMgr.isFinished() || main != Player.State)
        {
            //歩き
            if (Player.State == Main.CharaState.Walk)
            {
                live2DModel.setParamFloat("Param3", -1);
                live2DModel.setParamFloat("Param7", 0);

                motionMgr.startMotion(motions[0]);
            }
            //走り
            else if (Player.State == Main.CharaState.Run)
            {
                live2DModel.setParamFloat("Param3", -1);
                live2DModel.setParamFloat("Param7", 0);

                motionMgr.startMotion(motions[1]);
            }
            //素手殴り
            else if (Player.State == Main.CharaState.HandAttack)
            {
                //live2DModel.setParamFloat("Param3", -1);
                motionMgr.startMotion(motions[2]);
            }
            //鉄棒殴り
            else if (Player.State == Main.CharaState.BarAttack)
            {
                motionMgr.startMotion(motions[3]);
            }
            //銃攻撃
            else if (Player.State == Main.CharaState.Shot)
            {
                motionMgr.startMotion(motions[4]);
            }
            //通常ダメージ
            else if (Player.State == Main.CharaState.Damage)
            {
                motionMgr.startMotion(motions[8]);
            }
            //銃攻撃
            else if (Player.State == Main.CharaState.Down)
            {
                motionMgr.startMotion(motions[9]);
            }
            //停止
            if (Player.State == Main.CharaState.Wait)
            {
                //live2DModel.setParamFloat("Param3", -1);
                motionMgr.startMotion(motions[10]);
                //motionMgr.stopAllMotions();
            }
        }

        main = Player.State;

        motionMgr.updateParam(live2DModel);
        live2DModel.update();
        live2DModel.draw();
    }
    void Update()
    {
        //Debug.Log(DateTime.Now);
        Festival();
        Timer();
        //base Behavior & Motion Ctrl
        if (live2DModel == null)
        {
            load();
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        if (!Application.isPlaying)
        {
            live2DModel.update();
            //live2DModel.draw();
            return;
        }

        //if (ВерныйAS.isPlaying)
        //{
        //    audioPlayerAS.volume = 0.1f;
        //    //audioPlayerAS.mute = true;
        //}
        //else
        //{
        //    audioPlayerAS.volume = 1.0f;
        //    //audioPlayerAS.mute = false;
        //}

        //每隔一段时间随机播放动画
        //playTime += Time.deltaTime;
        //if (playTime >= playRate)
        //{
        //if (motionMgr.isFinished())
        //{
        //    motionMgr.startMotion(Live2DMotion.loadMotion(motionFile[UnityEngine.Random.Range(0, 4)].bytes));
        //    playTime = 0;
        //}
        //}


        var pos = Input.mousePosition;

        if (playTime < playRate) //计时器逻辑
        {
            playTime += Time.deltaTime;
        }
        if (Input.GetMouseButtonDown(0))//点击随机播放动画和对应语音
        {
            if (playTime >= playRate)
            {
                if (motionMgr.isFinished())
                {
                    audioClipID   = UnityEngine.Random.Range(0, ВерныйAudioClipRandomIdle.Length);
                    ВерныйAS.clip = ВерныйAudioClipRandomIdle[audioClipID];
                    ВерныйAS.Play();
                    cuAudioClipID = audioClipID;                                                         //获取当前随机到的声音ID
                    //Debug.Log(cuAudioClipID);
                    motionMgr.startMotion(Live2DMotion.loadMotion(idleMotionFile[cuAudioClipID].bytes)); //播放对应的动画
                    playTime -= playRate;
                }
            }
        }
        //else if (Input.GetMouseButtonDown(1))
        //{
        //    if (motionMgr.isFinished())
        //    {
        //        motionMgr.startMotion(motionBattle);
        //    }
        //}
        else if (Input.GetMouseButton(0))
        {
            dragMgr.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            dragMgr.Set(0, 0);
        }

        dragMgr.update();
        live2DModel.setParamFloat("PARAM_ANGLE_X", dragMgr.getX() * 20);
        live2DModel.setParamFloat("PARAM_ANGLE_Y", dragMgr.getY() * 20);

        live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", dragMgr.getX() * 10);

        live2DModel.setParamFloat("PARAM_EYE_BALL_X", dragMgr.getX() * 20);
        live2DModel.setParamFloat("PARAM_EYE_BALL_Y", dragMgr.getY() * 20);

        live2DModel.setParamFloat("PARAM_ikari", dragMgr.getX());
        live2DModel.setParamFloat("PARAM_ikari", dragMgr.getY());

        live2DModel.setParamFloat("PARAM_HAIR_FRONT", dragMgr.getX());
        live2DModel.setParamFloat("PARAM_HAIR_SIDE", dragMgr.getX());
        live2DModel.setParamFloat("PARAM_HAIR_BACK", dragMgr.getX());

        double timeSec = UtSystem.getUserTimeMSec() / 1000.0;
        double t       = timeSec * 2 * Math.PI;

        live2DModel.setParamFloat("PARAM_BREATH", (float)(0.5f + 0.5f * Math.Sin(t / 3.0)));

        eyeBlink.setParam(live2DModel);

        if (physics != null)
        {
            physics.updateParam(live2DModel);
        }

        live2DModel.update();

        if (live2DModel == null)
        {
            return;
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
        OnRenderObject();
    }
Beispiel #26
0
    void Update()
    {
        if (live2DModel == null)
        {
            return;
        }



        if (auto)
        {
            if (link_animator)
            {
                AnimatorStateInfo state = GetComponent <Animator>().GetCurrentAnimatorStateInfo(0);
                timer = state.length * state.normalizedTime;


                //timer = (float)GetComponent<Animator>().GetTime();
                UtSystem.setUserTimeMSec((long)(timer * 1000.0f));
            }
            else
            {
                delta_timer = (Time.time - temp_real_timer) * speed;

                timer += delta_timer;

                UtSystem.setUserTimeMSec((long)(timer * 1000.0f));

                temp_real_timer = Time.time;
            }
        }

        bool motion_chenged = false;

        if (motionFile == null)
        {
            motion = null;


            temp_motionFile_name = "";
        }
        else
        {
            if (temp_motionFile_name != motionFile.name)
            {
                motion         = Live2DMotion.loadMotion(motionFile.bytes);
                motion_chenged = true;
            }

            temp_motionFile_name = motionFile.name;
        }



        if (live2DModel.getLayer() != gameObject.layer)
        {
            live2DModel.setLayer(gameObject.layer);
        }


        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }



        if (motion != null)
        {
            motion.setLoop(true);
            motion.setFadeIn(0);
            motion.setFadeOut(0);

            if (motionMgr.isFinished())
            {
                motionMgr.startMotion(motion);
            }

            if (motion_chenged)
            {
                motionMgr.stopAllMotions();
                motionMgr.startMotion(motion);
            }


            motionMgr.updateParam(live2DModel);
        }
        else
        {
            motionMgr.stopAllMotions();

            if (motionFile != null)
            {
                motion = Live2DMotion.loadMotion(motionFile.bytes);
            }
        }



        live2DModel.update();

        if (live2DModel.getRenderMode() == Live2D.L2D_RENDER_DRAW_MESH)
        {
            Render();
        }
    }
Beispiel #27
0
    void Update()
    {
        if (live2DModel == null)
        {
            load();
        }
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        if (!Application.isPlaying)
        {
            live2DModel.update();
            return;
        }

        var pos = Input.mousePosition;

        if (Input.GetMouseButtonDown(0))
        {
            //
        }
        else if (Input.GetMouseButton(0))
        {
            dragMgr.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            dragMgr.Set(0, 0);
        }


        dragMgr.update();
        live2DModel.setParamFloat("PARAM_ANGLE_X", dragMgr.getX() * 30);
        live2DModel.setParamFloat("PARAM_ANGLE_Y", dragMgr.getY() * 30);

        live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", dragMgr.getX() * 10);

        live2DModel.setParamFloat("PARAM_EYE_BALL_X", -dragMgr.getX());
        live2DModel.setParamFloat("PARAM_EYE_BALL_Y", -dragMgr.getY());

        double timeSec = UtSystem.getUserTimeMSec() / 1000.0;
        double t       = timeSec * 2 * Math.PI;

        live2DModel.setParamFloat("PARAM_BREATH", (float)(0.5f + 0.5f * Math.Sin(t / 3.0)));

        eyeBlink.setParam(live2DModel);

        if (physics != null)
        {
            physics.updateParam(live2DModel);
        }

        live2DModel.update();

        if (Input.GetKeyDown(KeyCode.A))
        {// pressed "A" key.
            motionMgr.startMotion(motion);
        }

        motionMgr.updateParam(live2DModel);

        live2DModel.update();
    }
    // Update is called once per frame
    void Update()
    {
        //设置矩阵 当前坐标转换为世界坐标 矩阵相乘
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        //启动api自带的update
        live2DModel.update();
        ////启动动画管理 告诉他启动哪一个角色的动画
        //motionQueueManager.updateParam(live2DModel);
        ////多个动作同时播放会卡一下最好不要设置相同参数 一般模型师都K好整个动作
        //motionQueueManagerA.updateParam(live2DModel);

        expressionMotionQueueManager.updateParam(live2DModel);
        ////控制动画切换动作
        if (Input.GetKeyDown(KeyCode.M))
        {
            motionIndex++;
            if (motionIndex >= expressions.Length)
            {
                motionIndex = 0;
            }
            expressionMotionQueueManager.startMotion(expressions[motionIndex]);
        }


        ////判断待机动作 当前动作进行完毕 true
        //if (l2DMotionManager.isFinished())
        //{
        //    StartMotion(0, 1);
        //}
        // if (Input.GetKeyDown(KeyCode.M))
        //{
        //    StartMotion(14, 2);
        //}
        ////启动l2DMotionManager里的Update
        //l2DMotionManager.updateParam(live2DModel);

        //设置参数 参数id(就live2d编辑器的那个) value就是该参数值 weight权重 影响度
        //live2DModel.setParamFloat("PARAM_ANGLE_X",30,weight);

        //if (Input.GetKeyDown(KeyCode.A))
        //{
        //    //往之前度数加上10度
        //    live2DModel.addToParamFloat("PARAM_ANGLE_X", 10);
        //}
        ////之前倍数乘上这个数值 也就是正值会向右边扭头 负值控制向左扭头 就可以控制数值了
        //live2DModel.multParamFloat("PARAM_ANGLE_X", 10);
        ////也可以通过获取索引设置参数
        //int paramAngleX;
        //paramAngleX = live2DModel.getParamIndex("PARAM_ANGLE_X");
        //live2DModel.setParamFloat(paramAngleX,30);

        ////参数的保存与回复
        //live2DModel.setParamFloat("PARAM_ANGLE_X", 30, weight);
        ////保存与回复的参数是整个模型的所有参数 并不是之前同方法里的设置的几个参数
        //live2DModel.saveParam();
        //live2DModel.loadParam();

        ////设置某一部分的透明度
        //live2DModel.setPartsOpacity("PARTS_01_CLOTHES",0);
        //眨眼
        eyeBlinkMotion.setParam(live2DModel);
        //后面时间按创建时间计算 类似于计时器
        long time = UtSystem.getUserTimeMSec();//获取执行时间

        physicsHairSideLeft.update(live2DModel, time);
        physicsHairSideRight.update(live2DModel, time);
        physicsHairBackLeft.update(live2DModel, time);
        physicsHairBackRight.update(live2DModel, time);
        //模型跟随鼠标转向与看向
        //参数及时更新,考虑加速度等自然因素 计算坐标 逐渐更新
        drag.update();
        //获取鼠标位置
        Vector3 pos = Input.mousePosition;

        if (Input.GetMouseButton(0))
        {
            //转化坐标
            //得到Live2D鼠标监测点的比例值-1到1(对应Live2D拖拽
            //管理坐标系,或者叫影响度)
            //然后我们通过这个值去设置我们的参数 比如旋转30*当前的到的值
            //然后按这个值所带来的影响度去影响我们的动作
            //从而达到看向某一点的位置
            drag.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        }
        else if (Input.GetMouseButtonUp(0))
        {
            drag.Set(0, 0);
        }


        //模型转向
        if (drag.getX() != 0)
        {
            live2DModel.setParamFloat("PARAM_ANGLE_X", 30 * drag.getX());
            live2DModel.setParamFloat("PARAM_ANGLE_Y", 30 * drag.getY());
            live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", 10 * drag.getX());
            //官方给出如果取-drag.getX() 人物就会一直看你 就是屏幕中间
            live2DModel.setParamFloat("PARAM_EYE_BALL_X", drag.getX());
            live2DModel.setParamFloat("PARAM_EYE_BALL_Y", drag.getY());
        }
    }
Beispiel #29
0
    void Update()
    {
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);
        #region
        //if (Input.GetMouseButtonDown(0))
        //{
        //    motionIndex++;
        //    if (motionIndex >= motions.Length)
        //    {
        //        motionIndex = 0;
        //    }
        //    motionQueueManager.startMotion(motions[motionIndex]);
        //}

        //motionQueueManager.updateParam(live2DModel);
        //motionQueueManagerB.updateParam(live2DModel);


        //判断待机动作
        //if (motionManager.isFinished())
        //{
        //    StartMotion(0, 1);
        //}
        //else if (Input.GetKeyDown(KeyCode.Space))
        //{
        //    StartMotion(14, 2);
        //}
        //motionManager.updateParam(live2DModel);

        //设置参数
        // live2DModel.setParamFloat(2, 30, 1);
        //参数的保存与回复  整个模型的参数
        //live2DModel.saveParam();
        //live2DModel.loadParam();

        //设定模型某一部分的透明度
        //live2DModel.setPartsOpacity("PARTS_01_EYE_BALL_001", 0);
        #endregion
        //眨眼
        eyeBlinkMotion.setParam(live2DModel);

        //获取鼠标位置
        Vector3 pos = Input.mousePosition;
        if (Input.GetMouseButton(0))
        {   //通过公式转换得到live2d鼠标检测点的比例值是-1到1
            //通过这个值取设置我们的参数
            //按照这个值带来的影响度来影响模型动作
            drag.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        }
        else
        {
            drag.Set(0, 0);
        }
        drag.update();

        //模型转向
        if (drag.getX() != 0)
        {
            live2DModel.setParamFloat("PARAM_ANGLE_X", 30 * drag.getX());
            live2DModel.setParamFloat("PARAM_ANGLE_Y", 30 * drag.getY());
            live2DModel.setParamFloat("PARAM_EYE_BALL_X", drag.getX()); //取-值眼睛只盯着玩家
            live2DModel.setParamFloat("PARAM_EYE_BALL_Y", drag.getY());
            live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", 10 * drag.getX());
        }

        long time = UtSystem.getUserTimeMSec();

        sideHairLeft.update(live2DModel, time);
        sideHairRight.update(live2DModel, time);
        backHairLeft.update(live2DModel, time);
        backHairRight.update(live2DModel, time);

        //表情使用
        if (Input.GetMouseButtonDown(0))
        {
            motionIndex++;
            if (motionIndex >= expressions.Length)
            {
                motionIndex = 0;
            }
            expressionManager.startMotion(expressions[motionIndex]);
        }

        expressionManager.updateParam(live2DModel);


        //更新模型状态
        live2DModel.update();
    }
Beispiel #30
0
    // Update is called once per frame
    void Update()
    {
        live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

        //if (Input.GetKeyDown(KeyCode.M))
        //{
        //    motionIndex++;
        //    if (motionIndex>=motions.Length)
        //    {
        //        motionIndex = 0;
        //    }
        //    motionQueueManager.startMotion(motions[motionIndex]);
        //}

        //motionQueueManager.updateParam(live2DModel);
        //motionQueueManagerA.updateParam(live2DModel);

        if (Input.GetKeyDown(KeyCode.M))
        {
            motionIndex++;
            if (motionIndex >= expressions.Length)
            {
                motionIndex = 0;
            }
            expresionMotionQueueManager.startMotion(expressions[motionIndex]);
        }

        expresionMotionQueueManager.updateParam(live2DModel);


        //判断待机动作
        //if (l2DMotionManager.isFinished())
        //{
        //    StartMotion(0,1);
        //}
        //else if (Input.GetKeyDown(KeyCode.M))
        //{
        //    StartMotion(14,2);
        //}
        //l2DMotionManager.updateParam(live2DModel);

        //设置参数
        //live2DModel.setParamFloat("PARAM_ANGLE_X",1);

        //if (Input.GetKeyDown(KeyCode.A))
        //{
        //    live2DModel.addToParamFloat("PARAM_ANGLE_X", a);
        //}

        //live2DModel.multParamFloat("PARAM_ANGLE_X", a);
        ////也可以通过获取索引去设置参数
        //int paramAngleX;
        //paramAngleX = live2DModel.getParamIndex("PARAM_ANGLE_X");
        //live2DModel.setParamFloat(paramAngleX,30);

        ////参数的保存与回复
        //live2DModel.setParamFloat("PARAM_ANGLE_X", 30);
        ////保存与回复的参数是整个模型的所有参数,并不只是之前同方法里设置的某几个参数
        //live2DModel.saveParam();
        //live2DModel.loadParam();

        //设定模型某一部分的不透明度。
        //live2DModel.setPartsOpacity("PARTS_01_FACE_001", 0);

        //模型跟随鼠标转向与看向
        //得到的Live2d鼠标检测点的比例值是-1到1(对应一个live2d拖拽
        //管理坐标系,或者叫做影响度。)
        //然后我们通过这个值去设置我们的参数,比如旋转30度*当前得到的值
        //就会按照这个值所带来的影响度去影响我们的模型动作
        //从而到达看向某一个点的位置
        Vector3 pos = Input.mousePosition;//屏幕坐标

        if (Input.GetMouseButton(0))
        {
            drag.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
        }

        else if (Input.GetMouseButtonUp(0))
        {
            drag.Set(0, 0);
        }

        //参数及时更新,考虑加速度等自然因素,计算坐标,进行逐帧更新。
        drag.update();

        //模型转向
        if (drag.getX() != 0)
        {
            live2DModel.setParamFloat("PARAM_ANGLE_X", 30 * drag.getX());
            live2DModel.setParamFloat("PARAM_ANGLE_Y", 30 * drag.getY());
            live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", 10 * drag.getX());
            live2DModel.setParamFloat("PARAM_EYE_BALL_X", -drag.getX());
            live2DModel.setParamFloat("PARAM_EYE_BALL_Y", -drag.getY());
        }

        //眨眼
        eyeBlinkMotion.setParam(live2DModel);

        long time = UtSystem.getUserTimeMSec();//执行时间

        physicsHairSideLeft.update(live2DModel, time);
        physicsHairSideRight.update(live2DModel, time);
        physicsHairBackLeft.update(live2DModel, time);
        physicsHairBackRight.update(live2DModel, time);

        live2DModel.update();
    }