예제 #1
0
        public EnumsEnemy.Movimiento CheckSpecialAttack(EnumsEnemy.Movimiento _movimiento)
        {
            float specialMovement = Random.Range(MinRangeRandom, MaxRangeRandom);

            EnumsEnemy.Movimiento movimiento = _movimiento;
            if (specialMovement < AttackSpecialPorcentage)
            {
                if (_movimiento == EnumsEnemy.Movimiento.Agacharse || _movimiento == EnumsEnemy.Movimiento.AgacharseAtaque || _movimiento == EnumsEnemy.Movimiento.AgacheDefensa)
                {
                    movimiento = EnumsEnemy.Movimiento.AtaqueEspecialAgachado;
                }
                else if (_movimiento == EnumsEnemy.Movimiento.Saltar || _movimiento == EnumsEnemy.Movimiento.SaltoAtaque || _movimiento == EnumsEnemy.Movimiento.SaltoDefensa)
                {
                    movimiento = EnumsEnemy.Movimiento.AtaqueEspecialSalto;
                }
                else if (_movimiento == EnumsEnemy.Movimiento.AtacarEnElLugar || _movimiento == EnumsEnemy.Movimiento.DefensaEnElLugar)
                {
                    movimiento = EnumsEnemy.Movimiento.AtaqueEspecial;
                }
            }
            return(movimiento);
        }
예제 #2
0
        // VA A FALTAR CREAR UNA BARRA DE ATAQUE ESPECIAL Y QUE CUANDO LA BARRA ESTE LLENA LLAME A LA FUNCION DE CHECK ATAQUE ESPECIAL
        public void CheckComportamiento()
        {
            EnumsEnemy.Movimiento movimiento = EnumsEnemy.Movimiento.Nulo;
            if (enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.MoveToPointCombat && enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.MoveToPointDeath)
            {
                if (activateComportamiento)
                {
                    float opcionMovement = Random.Range(MinRangeRandom, MaxRangeRandom);

                    if (opcionMovement < MovePorcentage)
                    {
                        //MOVIMIENTO
                        if (structsEnemys.dataEnemy.columnaActual >= gridEnemy.GetCuadrilla_columnas() - 1)
                        {
                            movimiento = EnumsEnemy.Movimiento.MoverAdelante;
                        }
                        else if (structsEnemys.dataEnemy.columnaActual <= 0)
                        {
                            movimiento = EnumsEnemy.Movimiento.MoverAtras;
                        }
                        else
                        {
                            opcionMovement = Random.Range(MinRangeRandom, MaxRangeRandom);
                            if (opcionMovement < MoveBackPorcentage)
                            {
                                movimiento = EnumsEnemy.Movimiento.MoverAtras;
                            }
                            else
                            {
                                movimiento = EnumsEnemy.Movimiento.MoverAdelante;
                            }
                        }
                    }
                    else if (opcionMovement >= MovePorcentage && opcionMovement < (MovePorcentage + JumpPorcentage))
                    {
                        //SALTO
                        opcionMovement = Random.Range(MinRangeRandom, MaxRangeRandom);
                        if (opcionMovement < AttackJumpPorcentage)
                        {
                            movimiento = EnumsEnemy.Movimiento.SaltoAtaque;
                        }
                        else if (opcionMovement >= AttackJumpPorcentage && opcionMovement < (AttackJumpPorcentage + DefenceJumpPorcentage))
                        {
                            movimiento = EnumsEnemy.Movimiento.SaltoDefensa;
                        }
                        else if (opcionMovement >= (AttackJumpPorcentage + DefenceJumpPorcentage))
                        {
                            movimiento = EnumsEnemy.Movimiento.Saltar;
                        }
                    }
                    else if (opcionMovement >= (MovePorcentage + JumpPorcentage) && opcionMovement < (MovePorcentage + JumpPorcentage + DuckPorcentage))
                    {
                        //AGACHARSE
                        opcionMovement = Random.Range(MinRangeRandom, MaxRangeRandom);
                        if (opcionMovement < AttackDuckPorcentage)
                        {
                            movimiento = EnumsEnemy.Movimiento.AgacharseAtaque;
                        }
                        else if (opcionMovement >= AttackDuckPorcentage && opcionMovement < (AttackDuckPorcentage + DefenceDuckPorcentage))
                        {
                            movimiento = EnumsEnemy.Movimiento.AgacheDefensa;
                        }
                        else if (opcionMovement >= (AttackDuckPorcentage + DefenceDuckPorcentage))
                        {
                            movimiento = EnumsEnemy.Movimiento.Agacharse;
                        }
                    }
                    else if (opcionMovement >= (MovePorcentage + JumpPorcentage + DuckPorcentage))
                    {
                        //QUIETO EN EL LUGAR
                        opcionMovement = Random.Range(MinRangeRandom, MaxRangeRandom);
                        if (opcionMovement < AttackPorcentage)
                        {
                            movimiento = EnumsEnemy.Movimiento.AtacarEnElLugar;
                        }
                        else if (opcionMovement >= AttackPorcentage && opcionMovement < (AttackPorcentage + DeffensePorcentage))
                        {
                            movimiento = EnumsEnemy.Movimiento.DefensaEnElLugar;
                        }
                    }
                }
            }
            else
            {
                movimiento = enumsEnemy.GetMovement();
            }
            delaySelectMovement = Random.Range(minRandomDelayMovement, maxRandomDelayMovement);
            enumsEnemy.SetMovement(movimiento);
            //Debug.Log(movimiento.ToString());
            if (enumsEnemy.GetMovement() == EnumsEnemy.Movimiento.SaltoAtaque || enumsEnemy.GetMovement() == EnumsEnemy.Movimiento.AtaqueEspecialSalto)
            {
                delayAttack = delayAttackJumping;
            }
            if (enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.SaltoDefensa || enumsEnemy.GetMovement() != EnumsEnemy.Movimiento.DefensaEnElLugar)
            {
                isDeffended = false;
            }

            //SACAR LA CONDICION QUE SEA IGUAL AL JEFE CUANDO ESTE TENGA UN COMPORTAMIENTO
            if (enumsEnemy.typeEnemy == EnumsEnemy.TiposDeEnemigo.Jefe || !activateComportamiento)
            {
                DefaultBehavior();
            }
        }