// Update is called once per frame
    void Update()
    {
        switch (estado)
        {
        case EstadoDePersonagem.aPasseio:
            mov.AplicadorDeMovimentos(controle.ValorParaEixos());
            break;

        case EstadoDePersonagem.comMeuCriature:
        case EstadoDePersonagem.parado:
            mov.AplicadorDeMovimentos(Vector3.zero);
            break;
        }
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        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 (controle)
            {
                dir = controle.ValorParaEixos();
                if (estado == CreatureState.emLuta)
                {
                    dir = direcaoInduzida(dir.x, dir.z);
                }
            }
            else
            {
                controle = FindObjectOfType <AndroidController>();
            }

            if (mov == null)
            {
                SetaMov();
            }
            else
            {
                mov.AplicadorDeMovimentos(dir, meuCriatureBase.CaracCriature.distanciaFundamentadora, transform);
            }

            break;
        }
    }
示例#3
0
 void FinalizaGiro()
 {
     EventAgregator.Publish(new StandardSendGameEvent(EventKey.disparaSom, SoundEffectID.pedrasQuebrando));
     EventAgregator.Publish(new StandardSendGameEvent(EventKey.requestShakeCam, ShakeAxis.z, 10, 2f));
     transform.rotation = Quaternion.identity;
     mov.ChangeGravityScale(5);
     mov.AplicadorDeMovimentos(-DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position));
     estado         = EstadoDaqui.pulinhosPreparatorios;
     contDePulinhos = 0;
     tempoDecorrido = 0;
 }
示例#4
0
        // Update is called once per frame
        void Update()
        {
            comandR.Update();
            //bControle.Update();

            switch (estado)
            {
            case EstadoDePersonagem.aPasseio:
                Vector3 V = comandR.VetorDirecao();

                if (!GameController.g.HudM.MenuDePause.EmPause)
                {
                    mov.AplicadorDeMovimentos(V);
                }
                break;

            case EstadoDePersonagem.comMeuCriature:
            case EstadoDePersonagem.parado:
                mov.AplicadorDeMovimentos(Vector3.zero);
                break;
            }
        }
    public bool UpdatePosition()
    {
        bool retorno = false;

        if (indiceDaDirecao < path.corners.Length)
        {
            Vector3 pos = oControlado.transform.position;
            mov.AplicadorDeMovimentos((path.corners[indiceDaDirecao] - pos).normalized);
            RaycastHit hit  = new RaycastHit();
            Vector3    proj = Vector3.ProjectOnPlane((path.corners[indiceDaDirecao] - pos), Vector3.up);
            if (Vector3.Distance(oControlado.transform.forward, proj.normalized) < 0.5f)
            {
                if (Physics.Raycast(pos, oControlado.transform.forward, out hit, 1))
                {
                    if (Vector3.Angle(hit.normal, Vector3.up) > 70 &&
                        Vector3.Angle(hit.normal, Vector3.up) < 110 &&
                        !mov._Pulo.EstouPulando)
                    {
                        mov._Pulo.IniciaAplicaPulo();
                    }
                }
            }

            if (Vector3.Distance(path.corners[indiceDaDirecao], pos) < 1)
            {
                indiceDaDirecao++;
            }
        }
        else
        {
            mov.Animador.PararAnimacao();
            mov.AplicadorDeMovimentos(Vector3.zero);
            mov._Pulo.NaoEstouPulando();
            retorno = true;
        }
        return(retorno);
    }
    // Update is called once per frame
    public bool Update(MovimentacaoBasica mov, Vector3 vetorDirecao)
    {
        Transform transform = controle.transform;

        tempoDeDano += Time.deltaTime;

        alturaAtual = transform.position.y;
        //direcao = Vector3.zero;

        if ((alturaAtual < posInicial.y + alturaAlvo) &&
            Mathf.Abs(transform.position.x - posInicial.x) < distanciaAlvo
            )
        {
            if (tempoDeDano < tempoBase)
            {
                controle.velocity = new Vector2(direcao.x, direcao.y) * m_MaxSpeed;
            }
            else
            {
                vetorDirecao = vetorDirecao + direcao.normalized;
                mov.AplicadorDeMovimentos(vetorDirecao.normalized, false, false);
            }
        }

        if (tempoDeDano < tempoFinal)
        {
            return(false);
        }

        /*
         * if (alturaAtual < alturaDoDano + 0.5f)
         * {
         *  direcao += 12 * Vector3.up;
         * }
         * if ((transform.position - posInicial).sqrMagnitude < esseGolpe.DistanciaDeRepulsao)
         *  direcao += esseGolpe.VelocidadeDeRepulsao * esseGolpe.DirDeREpulsao;
         *
         * vMove = Vector3.Lerp(vMove, direcao, 10 * Time.deltaTime);
         * controle.Move(vMove * Time.deltaTime);
         *
         *
         * if (tempoDeDano > esseGolpe.TempoNoDano)
         * {
         *  return false;
         *
         * }*/

        return(true);
    }
示例#7
0
    public bool UpdateMove()
    {
        Vector3 dir       = DirecaoNoPlano.NoUpNormalizado(dono.position, target);
        float   distancia = Mathf.Abs(dono.position.x - target.x);
        float   newVel    = distancia > 0.5f?vel:vel * distancia;

        mov.AplicadorDeMovimentos(newVel * dir);

        if (distancia < 0.1f)
        {
            return(true);
        }

        return(false);
    }
    protected override void Start()
    {
        mov.Iniciar(andador);
        posOriginal = transform.position;
        EventAgregator.AddListener(EventKey.triggerInfo, OnReceiveTriggerInfo);
        EventAgregator.AddListener(EventKey.animationPointCheck, OnReceivedAnimationPoint);
        base.Start();

        new MyInvokeMethod().InvokeAoFimDoQuadro(() =>
        {
            mov.AplicadorDeMovimentos(
                DirecaoNoPlano.NoUpNormalizado(transform.position, GameController.g.Manager.transform.position));
        });
    }
示例#9
0
    protected void UpdateMovendo()
    {
        mov.AplicadorDeMovimentos(
            Vector3.ProjectOnPlane(MovePoints[MoveTarget].position - transform.position, Vector3.up).normalized);

        if (Mathf.Abs(MovePoints[MoveTarget].position.x - transform.position.x) < 0.1f)
        {
            TempoDecorrido = 0;
            OnTargetCheck();//estado = EstadoDaqui.esperandoMove;
            TrocaMoveTarget();
        }

        if (Vector2.Distance(GameController.g.Manager.transform.position, transform.position) < DISTANCIA_DE_ACELERACAO
            &&
            Time.time - UltimaAcelerada > INTERVALO_ENTRE_INVESTIDAS
            )
        {
            OnActionRequest();//PrepararInvestida();
        }
    }
示例#10
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;
        }
    }
 private void OnOpenExternalPanel(IGameEvent e)
 {
     RetornarComponentesAoPAdrao();
     mov.AplicadorDeMovimentos(Vector3.zero);
     estado = EstadoDePersonagem.parado;
 }