public void ImpatoAtivo(GameObject G, PetAttackBase ativa, ImpactFeatures caracteristica, GameObject focado = null)
        {
            if (focado)
            {
                alvoProcurado = focado.transform;
            }
            else
            {
                alvoProcurado = FindBestTarget.Procure(G, new string[1] {
                    "Criature"
                });
            }

            tempoDecorrido += Time.deltaTime;
            if (!procurouAlvo)
            {
                alvoProcurado = CriaturesPerto.procureUmBomAlvo(G);
                procurouAlvo  = true;
                Debug.Log(alvoProcurado + "  esse é o alvo");
                AttackHelper(alvoProcurado, G.transform);
            }

            if (!addView)
            {
                tempoDecorrido += ativa.TempoDeMoveMin;
                AttackColliders.AdicionaOColisor(G, ativa, caracteristica, tempoDecorrido);

                MessageAgregator <MsgRequest3dSound> .Publish(new MsgRequest3dSound()
                {
                    sfxId  = ativa.SomDoGolpe,
                    sender = G.transform
                });

                addView = true;
            }

            if (tempoDecorrido < ativa.TempoDeMoveMax)
            {
                if (((int)(tempoDecorrido * 10)) % 2 == 0 && alvoProcurado)
                {
                    AttackHelper(alvoProcurado, G.transform);
                }

                ativa.DirDeREpulsao = G.transform.forward;

                if (!controle)
                {
                    controle = G.GetComponent <CharacterController>();
                }
                controle.Move(ativa.VelocidadeDeGolpe * G.transform.forward * Time.deltaTime + Vector3.down * 9.8f);
            }
        }
Beispiel #2
0
        public void ImpactoAtivo(
            GameObject G,
            PetAttackBase ativa,
            AeroImpactFeatures caracteristica,
            float colocarColisor = 0,
            GameObject focado    = null)
        {
            tempoDecorrido += Time.deltaTime;

            if (!procurouAlvo)
            {
                if (focado)
                {
                    alvoProcurado = focado.transform;
                }
                else
                {
                    alvoProcurado = FindBestTarget.Procure(G, new string[1] {
                        "Criature"
                    });                                                                     //CriaturesPerto.procureUmBomAlvo(G);
                }
                procurouAlvo = true;
                // Debug.Log(alvoProcurado + "  esse é o alvo");
                StandardImpactUpdate.AttackHelper(alvoProcurado, G.transform);
                if (alvoProcurado != null)
                {
                    ativa.DirDeREpulsao = (Vector3.ProjectOnPlane(alvoProcurado.position - G.transform.position, Vector3.up)).normalized;
                }

                MessageAgregator <MsgRequestAtkAnimation> .Publish(new MsgRequestAtkAnimation()
                {
                    gameObject = G,
                    nomeAnima  = ativa.Nome.ToString()
                });

                MessageAgregator <MsgRequest3dSound> .Publish(new MsgRequest3dSound()
                {
                    sender = G.transform,
                    sfxId  = ativa.SomDoGolpe
                });

                //AnimadorCriature.AnimaAtaque(G, ativa.Nome.ToString());

                /* aproveitado da geração 1 de scripts atualizado no 2021*/
                ao               = G.AddComponent <OnFloorImpactParticles>();
                ao.aoChao        = caracteristica.toque.ToString();
                ao.onGroundSound = caracteristica.onTouchGroundSound;
                /* ******************* */
            }

            if (!adview && tempoDecorrido > colocarColisor)
            {
                AttackColliders.AdicionaOColisor(G, ativa, caracteristica.deImpacto, tempoDecorrido + ativa.TempoDeMoveMin);

                adview = true;
            }

            if (caracteristica.final == FinalAeroImpact.MaisAltoQueOAlvo)
            {
                MaisAltoQueOAlvo(G, ativa);
            }
            else
            {
                AvanceEPareAbaixo(G, ativa);
            }


            //if (tempoDecorrido > ativa.TempoDeMoveMax)
            //    nav.enabled = estavaParada;
        }
Beispiel #3
0
        public override void UpdateGolpe(GameObject G, GameObject focado = null)
        {
            tempoDecorrido += Time.deltaTime;
            if (tempoDecorrido < TempoDeMoveMax)
            {
                if (!controle)
                {
                    controle = G.GetComponent <CharacterController>();
                }

                controle.Move(Vector3.up * velocidadeSubindo * Time.deltaTime);
            }

            if (tempoDecorrido > TempoDeMoveMax && !procurouAlvo)
            {
                if (!procurouAlvo)
                {
                    if (focado)
                    {
                        alvoProcurado = focado.transform;
                    }
                    else
                    {
                        alvoProcurado = FindBestTarget.Procure(G, new string[1] {
                            "Criature"
                        }, 100);
                    }
                }
                //alvoProcurado = CriaturesPerto.procureUmBomAlvo(G, 100);

                if (alvoProcurado)
                {
                    if (Vector3.SqrMagnitude(
                            Vector3.ProjectOnPlane(G.transform.position - alvoProcurado.position, Vector3.up)) < 25)
                    {
                        alvoProcurado = null;
                    }
                }

                procurouAlvo = true;

                Debug.Log("Sobre voo, alvo procurado: " + alvoProcurado);
            }

            if (tempoDecorrido > TempoDeMoveMax && tempoDecorrido < TempoDeDestroy)
            {
                //if (!procurouAlvo)
                //   alvoProcurado = CriaturesPerto.procureUmBomAlvo(G, 100);

                if (!addView)
                {
                    AttackColliders.AdicionaOColisor(G, this, carac, tempoDecorrido);
                    addView = true;
                }

                Vector3 dir = G.transform.forward + 0.5f * Vector3.down;


                if (alvoProcurado)
                {
                    if (Vector3.ProjectOnPlane(posInicial - alvoProcurado.position, Vector3.up).sqrMagnitude > 25)
                    {
                        dir = alvoProcurado.position - G.transform.position + 0.5f * Vector3.down;
                    }
                }

                dir.Normalize();

                controle.Move(dir * VelocidadeDeGolpe * Time.deltaTime);
            }
        }