示例#1
0
    private IEnumerator DoBackPosition()
    {
        while (true)
        {
            yield return((object)null);

            float maxAngle = 320f;
            _transform.set_rotation(Quaternion.AngleAxis(maxAngle, Vector3.get_up()));
            animCtrl.SetMoveRunAnim(1);
            animCtrl.Play(PLCA.RUN_F, false);
            float   capability = MonoBehaviourSingleton <OutGameSettingsManager> .I.homeScene.npc00StunCapability;
            Vector3 savePos2;
            if (capability >= Random.Range(0f, 1f))
            {
                yield return((object)new WaitForSeconds(0.5f));

                animCtrl.moveAnim = PLCA.STUN;
                animCtrl.Play(PLCA.STUN, false);
                yield return((object)new WaitForSeconds(0.5f));

                savePos2 = _transform.get_position();
                while (!animCtrl.IsPlayingIdleAnims(0))
                {
                    _transform.set_position(savePos2);
                    yield return((object)null);
                }
                animCtrl.moveAnim = PLCA.RUN_F;
                animCtrl.Play(PLCA.RUN_F, false);
            }
            Vector3 startDir = defaultPosition - _transform.get_position();
            startDir.Normalize();
            while (!CheckBackPosition(startDir))
            {
                yield return((object)null);
            }
            animCtrl.PlayDefault(false);
            yield return((object)new WaitForSeconds(0.3f));

            savePos2          = _transform.get_position();
            animCtrl.moveAnim = PLCA.TURN_L;
            animCtrl.Play(PLCA.TURN_L, false);
            yield return((object)null);

            while (!animCtrl.IsPlayingIdleAnims(0))
            {
                _transform.set_position(savePos2);
                yield return((object)null);
            }
            animCtrl.SetMoveRunAnim(1);
            coroutines.Pop();
            state = (STATE)coroutines.Peek();
        }
    }