Beispiel #1
0
            void Update()
            {
                if (isStart)
                {
                    Manager.GameManager.INSTANCE.SFXPlay(_audio, _sfx[0]);
                    isStart = false;
                }

                if (IsLive && !IsAttack && !IsStun && player.IsLive)
                {
                    float dis = Vector3.Distance(this.transform.position, TargetTr.position);

                    //달리기 범위
                    if (dis > RunDis)
                    {
                        EnemyRun(TargetTr);
                    }


                    //공격 범위보다 멀리 있을때 타겟 추적
                    else if (dis > AttackDis && dis <= RunDis)
                    {
                        EnemyMove(TargetTr); //목적지를 세팅 해주고 이동 시킨다
                    }


                    else if (dis <= AttackDis)
                    {
                        if (!IsAttack)
                        {
                            Manager.GameManager.INSTANCE.SFXPlay(EnemyWeapone._Audio, EnemyWeapone._Sfx[Random.Range(0, EnemyWeapone._Sfx.Length)]);
                            StartCoroutine(EnemyWeapone.EnemyAttack(this));
                        }
                    }

                    AniCtrl.AniWalk(IsWalk);
                    AniCtrl.AniRun(IsRun);
                }

                if (!IsLive)
                {
                    DropItem();
                    if (questBoss != null)
                    {
                        if (isBoss)
                        {
                            questBoss.BossDown();
                        }

                        if (isSubBoss)
                        {
                            questBoss.SubQuestBossDown();
                        }
                    }
                }
            }
Beispiel #2
0
            void Update()
            {
                if (IsLive && !IsAttack && !IsStun && player.IsLive)
                {
                    float dis = Vector3.Distance(this.transform.position, TargetTr.position);

                    //공격 범위보다 멀리 있을때 타겟 추적
                    if (dis > AttackDis)
                    {
                        EnemyMove(TargetTr); //목적지를 세팅 해주고 이동 시킨다
                    }

                    if (dis <= AttackDis)
                    {
                        if (!IsAttack)
                        {
                            MagicRandum();
                            StartCoroutine(EnemyWeapone.EnemyAttack(this));
                        }
                    }

                    AniCtrl.AniWalk(IsWalk);
                    AniCtrl.AniRun(IsRun);
                }

                if (!IsLive)
                {
                    DropItem();
                    if (questBoss != null)
                    {
                        if (isBoss)
                        {
                            questBoss.BossDown();
                        }

                        if (isSubBoss)
                        {
                            questBoss.SubQuestBossDown();
                        }
                    }
                }
            }
Beispiel #3
0
            bool isTeleport = false; //플레이어에게 순간 이동

            //protected override void Start()
            //{
            //    base.Start();

            //    //if (hpUi != null)
            //    //{
            //    //    hpUi.UiAct();
            //    //    hpUi.HPFill(NHp, NMaxHp);
            //    //}

            //}

            private void Update()
            {
                if (IsLive && !IsAttack && !IsStun && player.IsLive)
                {
                    if (hpUi != null)
                    {
                        hpUi.UiAct();
                        hpUi.HPFill(NHp, NMaxHp);
                    }

                    //플레이어와의 거리
                    float dis = Vector3.Distance(this.transform.position, TargetTr.position);

                    //HP에 따른 헹동
                    if (NHp > (int)NMaxHp * 0.6f) //일반적인 AI와 같다
                    {
                        //공격 범위보다 멀리 있을때 타겟 추적
                        if (dis > AttackDis)
                        {
                            EnemyMove(TargetTr); //목적지를 세팅 해주고 이동 시킨다
                        }

                        if (dis <= AttackDis)
                        {
                            if (!IsAttack)
                            {
                                EnemyWeapone.BulletType = Manager.eProjectilesType.FireBall; //파이어 볼 공격
                                StartCoroutine(EnemyWeapone.EnemyAttack(this));
                            }
                        }
                    }

                    else if (NHp <= (int)NMaxHp * 0.6f && NHp > (int)NMaxHp * 0.3f)
                    {
                        //공격 범위보다 멀리 있을때 타겟 추적
                        if (dis > AttackDis)
                        {
                            StartCoroutine(Teleport());
                        }

                        if (dis <= AttackDis)
                        {
                            if (!IsAttack)
                            {
                                EnemyWeapone.BulletType = Manager.eProjectilesType.FireBall; //파이어 볼 공격
                                StartCoroutine(EnemyWeapone.EnemyAttack(this, 0.5f));
                            }
                        }
                    }

                    else if (NHp <= (int)NMaxHp * 0.3f)
                    {
                        //공격 범위보다 멀리 있을때 타겟 추적
                        if (dis > AttackDis)
                        {
                            StartCoroutine(Teleport());
                        }

                        if (dis <= AttackDis)
                        {
                            if (!IsAttack)
                            {
                                EnemyWeapone.BulletType = Manager.eProjectilesType.FireBall; //파이어 볼 공격
                                StartCoroutine(EnemyWeapone.EnemyAttack(this, 0.3f));
                            }
                        }
                    }


                    AniCtrl.AniWalk(IsWalk);
                    AniCtrl.AniRun(IsRun);
                }

                if (!IsLive)
                {
                    DropItem();
                    if (questBoss != null)
                    {
                        if (isBoss)
                        {
                            questBoss.BossDown();
                        }

                        if (isSubBoss)
                        {
                            questBoss.SubQuestBossDown();
                        }
                    }
                }
            }