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(); } } } }
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)); }