Esempio n. 1
0
    IEnumerator Bullet_Move(EnemyM origin, CharacterM target)
    {
        if (origin.Menemy_info.enemy_name.Equals("Enemy Wizard"))
        {
            Now_Bullet = EnemyWizard;
        }

        Now_Bullet.SetActive(true);

        while (true)
        {
            if ((transform.position - target.transform.position).sqrMagnitude < 0.3f)
            {
                target.GetHit(origin.Menemy_info.enemy_damage);
                origin.On_hit_bullet = true;
                Now_Bullet.SetActive(false);
                transform.localPosition = origin.mBullet_POS;
                origin.Mana            += origin.Menemy_info.enemy_VaryMP;
                break;
            }
            else
            {
                transform.LookAt(target.transform);
                transform.Translate(Vector3.forward * Time.deltaTime * Bullet_Speed);
            }
            yield return(null);
        }
    }
    public GameObject Pop_Pooling(Enemy info_)
    {
        GameObject Return_Unit = Enemy_Unit_List[0];
        EnemyM     enemy       = Return_Unit.GetComponent <EnemyM>();
        GameObject model       = enemy.Enemy_Models[info_.enemy_name];


        Return_Unit.SetActive(true);
        model.SetActive(true);
        enemy.mModel = model;
        Enemy_Unit_List.Remove(Return_Unit);
        enemy.Enemy_info_update(info_);
        return(Return_Unit);
    }
    public void Push_Pooling(GameObject unit, Enemy info_)
    {
        EnemyM enemy_ = unit.GetComponent <EnemyM>();

        //모델 비활성 후 null
        enemy_.mModel.SetActive(false);
        enemy_.mModel = null;
        enemy_.Menemy_info.Enemy_delete();


        //유닛 비활성 후 리스트 추가
        unit.transform.parent = Enemy_poolFolder.transform;
        unit.SetActive(false);
        Enemy_Unit_List.Add(unit);
    }
    private void Init_Pooling()
    {
        for (int i = 0; i < Character_max_poolobject; i++)
        {
            Character_Unit_List.Add(Instantiate(character_unit, Character_poolFolder.transform));   // 새로운 캐릭터 유닛 생성

            for (int j = 0; j < dataMGR.characters.Count; j++)
            {
                CharacterM character_     = Character_Unit_List[i].GetComponent <CharacterM>();
                string     character_name = dataMGR.characters[j].character_name;
                //  Debug.Log(character_name);
                character_.Character_Models.Add(character_name, character_.transform.Find(character_name).gameObject);
                character_.Character_Models[character_name].SetActive(false);
            }

            Character_Unit_List[i].SetActive(false);
        }

        for (int i = 0; i < Enemy_max_poolobject; i++)
        {
            Enemy_Unit_List.Add(Instantiate(enemy_unit, Enemy_poolFolder.transform));   // 새로운 적 유닛 생성

            for (int j = 0; j < dataMGR.enemys.Count; j++)
            {
                EnemyM enemy_     = Enemy_Unit_List[i].GetComponent <EnemyM>();
                string enemy_name = dataMGR.enemys[j].enemy_name;
                enemy_.Enemy_Models.Add(enemy_name, enemy_.transform.Find(enemy_name).gameObject);
                enemy_.Enemy_Models[enemy_name].SetActive(false);
            }

            Enemy_Unit_List[i].SetActive(false);
        }

        // 지정된 수만큼 아처 오브젝트 생성

        for (int i = 0; i < Arrow_max_poolobject; i++)
        {
            Archor_Arrow_List.Add(Instantiate(Archer_Arrow, Arrow_poolFolder.transform));
        }
    }
Esempio n. 5
0
 // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     player = GameObject.FindGameObjectWithTag("Player").transform;
     rb     = animator.GetComponent <Rigidbody2D>();
     enemyM = animator.GetComponent <EnemyM>();
 }
Esempio n. 6
0
 //적
 public void Shoot_Bullet(EnemyM origin, CharacterM target)
 {
     StartCoroutine(Bullet_Move(origin, target));
 }
Esempio n. 7
0
    //전투
    IEnumerator MinusHealth_c()
    {
        Debug.Log(mPath);

        if (mPath != (null))
        {
            // 이동중에서 왔을경우
            float now_distance  = (transform.position - now_node.transform.position).sqrMagnitude;
            float next_distance = (transform.position - mPath[path_index].transform.position).sqrMagnitude;
            transform.position = now_distance > next_distance ? mPath[path_index].transform.position : now_node.transform.position;
            mPath = null;
        }
        if (Next_Move != null)
        {
            StopCoroutine(Next_Move);
            Next_Move = null;
        }

        mTarget          = MyTarget.GetComponent <EnemyM>();
        now_node.bIsWall = false;

        while (true)
        {
            if (GameMGR._state == Board_Define.GAME_BATTLE)
            {
                // 타겟이 살아있는 경우
                if (mTarget.Is_Dead == false)
                {
                    now_node.bisCharacter = true;
                    transform.LookAt(MyTarget.transform);

                    if (MyTarget != null)
                    {
                        // 나의 공격력만큼 타겟의 체력을 깎아라
                        if (Current_MP >= 100)
                        {
                            Current_MP   = 0;
                            Skill_Switch = true;

                            // 스킬 애니메이션 실행
                            while (true)
                            {
                                Set_Ani(Ani_Define.SKILL);

                                if (Skill_Switch == false)
                                {
                                    break;
                                }
                                yield return(null);
                            }
                        }
                        else
                        {
                            Set_Ani(Ani_Define.ATTACK);
                            Mana += Mcharacter_info.character_VaryMP;
                            yield return(new WaitForSeconds(mAnimator.GetCurrentAnimatorStateInfo(0).length));

                            if (Long_attack)
                            {
                                while (true)
                                {
                                    Set_Ani(Ani_Define.IDLE);

                                    if (On_hit_bullet)
                                    {
                                        On_hit_bullet = false;
                                        break;
                                    }
                                    yield return(null);
                                }
                            }
                        }
                    }
                }

                else
                {
                    now_node.bisCharacter = false;
                    MyTarget        = null;
                    While_Fight     = null;
                    Character_state = Unit_Battle_State.FINDING;
                    yield break;
                }
            }
            else if (GameMGR._state == Board_Define.GAME_BATTEL_END)
            {
                mSkillObj.SetActive(false);
                mSKillBox        = null;
                now_node.bIsWall = true;
                Character_state  = Unit_Battle_State.READY;
                MyTarget         = null;
                While_Fight      = null;
                is_Unit_init     = false;
                yield break;
            }
        }
    }