示例#1
0
 void OnTriggerEnter(Collider col)
 {
     if (variaveisChave.shift[variavelChave])
     {
         Destroy(gameObject);
     }
     else
     {
         if (!iniciou && col.tag == "Player")
         {
             preparaIniciaConversa();
             Collider esseCol = GetComponent <Collider>();
             esseCol.enabled   = false;
             esseCol.isTrigger = false;
             iniciou           = true;
             variaveisChave.shift[variavelChave] = true;
         }
         else if (!iniciou && col.tag == "Criature" && !heroi.emLuta)
         {
             alternancia a = col.GetComponent <alternancia>();
             if (a)
             {
                 a.retornaAoHeroi();
             }
         }
     }
 }
示例#2
0
    void andaCriature4()
    {
        if (criature == null)
        {
            criature = GetComponent <umCriature> ();
        }

        if (
            (Time.time - H.tempoDoUltimoUsoDeItem < H.intervaloParaUsarItem
             ||
             temGolpeEmRecarga(criature.X))
            &&
            !hudRecarga
            )
        {
            hudRecarga    = Camera.main.gameObject.AddComponent <HUDRecarga>();
            hudRecarga.H1 = H;
        }


        if (Input.GetButtonDown("paraCriature") && heroi.emLuta == false)
        {
            alternancia a = GetComponent <alternancia>();
            a.retornaAoHeroi();
        }


        criatureVerificaTrocaGolpe(criature.X);

        criatureScroll();


        //bool grounded = noChao(.distanciaFundamentadora );

        // Forward vector relative to the camera along the x-z plane
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        int temMedo = statusTemporarioBase.contemStatus(tipoStatus.amedrontado, criature.X);

        if (temMedo > -1)
        {
            Vector2 embaralhamento = embaralhaDeMedo(criature.X, temMedo, h, v);
            h = embaralhamento.x;
            v = embaralhamento.y;
        }

        Vector3 forward = direcaoInduzida(h, v);

        forward.y = 0;
        forward   = forward.normalized;

        // Right vector relative to the camera
        // Always orthogonal to the forward vector
        Vector3 right = new Vector3(forward.z, 0, -forward.x);


        Vector3 direcaoAlvo = (h * right + v * forward);
        float   targetSpeed = Mathf.Min(direcaoAlvo.magnitude, 1.0f);

        targetSpeed *= criature.X.velocidadeAndando;
        if (Input.GetButtonDown("Jump") && noChao(criature.X.distanciaFundamentadora))
        {
            ultimoYFundamentado = transform.position.y;
            pulo = true;
            controle.Move(Vector3.up * (criature.X.distanciaFundamentadora + 0.05f));
        }

        if (noChao(criature.X.distanciaFundamentadora))
        {
            pulo = false;
            if (Input.GetButtonDown("acao")
                ||
                Input.GetButtonDown("acaoAlt")
                )
            {
                Criature daki = criature.X;
                if (daki.Golpes[daki.golpeEscolhido].CustoPE <= daki.cAtributos[1].Corrente)
                {
                    aplicaGolpe(daki);
                }
                else
                {
                    usaItemEmLuta.mensagemDuranteALuta(bancoDeTextos.falacoes[heroi.lingua]["encontros"][4]);
                }
            }
            maisUmAtualizaSuavemente(v, h, criature.X, direcaoAlvo);

            direcaoMovimento = direcaoMovimento * 3 * targetSpeed + Vector3.down * criature.X.gravidade;
            //	+ criature.X.apliqueGravidade(Vector3.zero, direcaoMovimento );
            if (statusTemporarioBase.contemStatus(tipoStatus.paralisado, criature.X) > -1)
            {
                direcaoMovimento /= 10;
            }
            controle.Move((direcaoMovimento) * Time.deltaTime);
        }
        else
        {
            if (statusTemporarioBase.contemStatus(tipoStatus.paralisado, criature.X) > -1)
            {
                direcaoAlvo /= 10;
            }
            verificaPulo(direcaoAlvo, criature.X);
        }
        if (noChao(criature.X.distanciaFundamentadora))
        {
            if (Mathf.Abs(v) > 0.3f || Mathf.Abs(h) > 0.3f)
            {
                transform.rotation = Quaternion.LookRotation(new Vector3(direcaoMovimento.x, 0, direcaoMovimento.z));
            }
        }
        else
        {
            Vector3 xzMove = direcaoMovimento * Time.deltaTime;
            xzMove.y = 0;
            if (xzMove.sqrMagnitude > 0.001f)
            {
                transform.rotation = Quaternion.LookRotation(xzMove);
            }
        }

        animator.SetBool("noChao", noChao(criature.X.distanciaFundamentadora));
        animator.SetBool("pulo", pulo);
        animator.SetFloat("velocidade", Mathf.Abs(v) + Mathf.Abs(h));
    }