示例#1
0
    // Update is called once per frame
    void Update()
    {
        //Debug.DrawRay(transform.position, Vector3.up);
        switch (estado)
        {
        case CreatureState.parado:
        case CreatureState.emDano:
        case CreatureState.aplicandoGolpe:
            if (mov != null)
            {
                mov.AplicadorDeMovimentos(Vector3.zero, meuCriatureBase.CaracCriature.distanciaFundamentadora, transform);
            }
            else
            {
                SetaMov();
            }
            break;

        case CreatureState.seguindo:
        case CreatureState.selvagem:
            ia.Update();
            break;

        case CreatureState.aPasseio:
        case CreatureState.emLuta:
            Vector3 dir = Vector3.zero;

            if (comandR != null)
            {
                dir = comandR.VetorDirecao();
                if (estado == CreatureState.emLuta)
                {
                    dir = comandR.DirDeEixos();
                    dir = direcaoInduzida(dir.x, dir.z);
                }
                else
                {
                    dir = comandR.VetorDirecao();
                }
            }


            if (mov == null)
            {
                SetaMov();
            }
            else
            {
                int temStatus = StatusTemporarioBase.ContemStatus(TipoStatus.amedrontado, meuCriatureBase);

                if (temStatus > -1)
                {
                    dir *= 1 / (float)meuCriatureBase.StatusTemporarios[temStatus].Quantificador;
                }

                if (!GameController.g.HudM.MenuDePause.EmPause)
                {
                    mov.AplicadorDeMovimentos(dir, meuCriatureBase.CaracCriature.distanciaFundamentadora, transform);
                }
            }

            break;
        }
    }