IEnumerator CoAttack() { State = CreatureState.Skill; GameObject go; // 피격 판정 if (_creature.CompareTag("Team")) { go = FindNearestObjectByTag("Enemy"); } else { go = FindNearestObjectByTag("Team"); } if (go != null) { transform.LookAt(go.transform); //공격대상 바라보기 if (_rangeAttacktype) //원거리 유닛이면 발사체 생성 { GameObject arrow = Managers.Resource.Instantiate($"Creature/Arrow_{(_creature.name).Substring(0, _creature.name.Length-1)}"); //이름뒤에 숫자 빼기 if (arrow != null) { arrow.transform.position = _creature.transform.position + new Vector3(0, 2, 1); ArrowCtrl ac = arrow.GetComponent <ArrowCtrl>(); if (ac != null) { ac.fire(go); } } } CreatureCtrl cc = go.GetComponent <CreatureCtrl>(); if (cc != null) { cc.OnDamaged(_atk); } Debug.Log("On Hit !"); } // 대기 시간 yield return(new WaitForSeconds(_atkSpeed)); _coSkill = null; State = CreatureState.Idle; // <- 공격하는게 어색하다 싶으면 Moving으로 바꿔보기 }
protected void Buff(MeadowUnit mu, bool unBuff) //버프 적용 or 해제 { int num = 1; if (!unBuff) //유닛이 죽으면 버프 해제하기 위한 것 { num = -1; } //버프를 주기 위해 "Team"이라는 태그를 이용해 게임 오브젝트 찾기 GameObject[] Team = GameObject.FindGameObjectsWithTag("Team"); if (Team != null) { foreach (GameObject go in Team) { CreatureCtrl cc = go.GetComponent <CreatureCtrl>(); if (cc != null) { switch (mu) { case MeadowUnit.Chicken2: //전리품 break; case MeadowUnit.Chicken3: break; case MeadowUnit.Cow2: cc.BuffHP(10 * num); break; case MeadowUnit.Cow3: cc.BuffHP(30 * num); break; case MeadowUnit.Duck2: //코인 break; case MeadowUnit.Duck3: break; case MeadowUnit.Horse2: cc.buffSpeed(0.1f * num); break; case MeadowUnit.Horse3: cc.buffSpeed(0.3f * num); break; case MeadowUnit.Sheep2: cc.buffAttack(3 * num); break; case MeadowUnit.Goat2: cc.buffAttackSpeed(0.1f * num); break; default: break; } } } } }
public void AddCreature(CreatureCtrl creature) { }