示例#1
0
    public void Move(Vector2 p_Move, bool p_Run, bool p_Jump, Transform p_TransformCamera)
    {
        bool _DoAnime = false;

        Constant.ENUM_STATE_ANIME _StateAnime = Constant.ENUM_STATE_ANIME.STATE_ANIME_WALK;

        // move
        if (p_Move != Vector2.zero)
        {
            if (m_ModelAnimationCtrl.m_StateAnime == Constant.ENUM_STATE_ANIME.STATE_ANIME_LAND || m_HitSide)
            {
                // can not move
            }
            else
            {
                _DoAnime = true;
                float _X = p_Move.x * SPEED_MOVE;
                float _Y = p_Move.y * SPEED_MOVE;

                if (IsAir())
                {
                    // jump, fall, land
                    _DoAnime = false;
                    _X      *= RATIO_MOVE_AIR;
                    _Y      *= RATIO_MOVE_AIR;
                }
                else if (p_Run)
                {
                    if (m_ModelAnimationCtrl.IsRunning())
                    {
                        // transition completed
                        _X *= RATIO_RUN;
                        _Y *= RATIO_RUN;
                    }
                    _StateAnime = Constant.ENUM_STATE_ANIME.STATE_ANIME_RUN;
                }

                Vector3 _ForwardCamera = Vector3.Scale(p_TransformCamera.forward, new Vector3(1.0f, 0.0f, 1.0f)).normalized;
                Vector3 _Direction     = _ForwardCamera * _Y + p_TransformCamera.right * _X;
                m_CharCtrl.Move(_Direction * Time.deltaTime);
            }
        }

        // jump
        if (p_Jump)
        {
            if (!IsAir())
            {
                _DoAnime    = true;
                m_Gravity   = SPEED_JUMP;
                _StateAnime = Constant.ENUM_STATE_ANIME.STATE_ANIME_JUMP;
            }
        }

        if (_DoAnime)
        {
            m_ModelAnimationCtrl.Animation(_StateAnime);
        }
    }
示例#2
0
 private void Update()
 {
     if (m_StateAnime == Constant.ENUM_STATE_ANIME.STATE_ANIME_LAND)
     {
         if (m_Animator.GetCurrentAnimatorStateInfo(ID_BASE_LAYER).IsName(ANIME_IDLE))
         {
             // land to idle
             m_StateAnime = Constant.ENUM_STATE_ANIME.STATE_ANIME_IDLE;
         }
     }
 }
示例#3
0
    public void Animation(Constant.ENUM_STATE_ANIME p_StateAnime)
    {
        if (m_StateAnime == p_StateAnime)
        {
            return;
        }

        foreach (AnimatorControllerParameter _Prm in m_Animator.parameters)
        {
            if (_Prm.type == AnimatorControllerParameterType.Bool)
            {
                m_Animator.SetBool(_Prm.name, false);
            }
        }
        switch (p_StateAnime)
        {
        case Constant.ENUM_STATE_ANIME.STATE_ANIME_WALK:
            m_Animator.SetBool(PRM_TO_WALK, true);
            break;

        case Constant.ENUM_STATE_ANIME.STATE_ANIME_RUN:
            m_Animator.SetBool(PRM_TO_RUN, true);
            break;

        case Constant.ENUM_STATE_ANIME.STATE_ANIME_JUMP:
            m_Animator.SetBool(PRM_TO_JUMP, true);
            break;

        case Constant.ENUM_STATE_ANIME.STATE_ANIME_FALL:
            m_Animator.SetBool(PRM_TO_FALL, true);
            break;

        case Constant.ENUM_STATE_ANIME.STATE_ANIME_LAND:
            m_Animator.SetBool(PRM_TO_LAND, true);
            break;

        default:
            // idle
            break;
        }
        m_StateAnime = p_StateAnime;
    }
示例#4
0
 private void Start()
 {
     m_Animator   = GetComponent <Animator>();
     m_StateAnime = Constant.ENUM_STATE_ANIME.STATE_ANIME_IDLE;
 }