private void Start() { monster = GameObject.FindGameObjectWithTag("Enemy"); player = GameObject.FindGameObjectWithTag("Player").GetComponent <PlayerIG>(); //eventTrigger = GameObject.Find("EventTrigger"); //apperaGoblin = eventTrigger.transform.GetChild(0).GetComponent<AppearY_Goblin>().mP_YellowGoblins; //apperaGoblin1 = eventTrigger.transform.GetChild(1).GetComponent<AppearY_Goblin>().mP_YellowGoblins; }
public override IEnumerator Coroutine() { while (!mMonsterAI.mIsDeath) { if (hasTarget) { mPathFider.isStopped = false; mMonsterAnimator.SetBool("isRun", true); float distance = Vector3.Magnitude(mTransform.position - mTarget.transform.position); float angle = Mathf.Abs(mTransform.eulerAngles.y - mTarget.transform.eulerAngles.y); if (distance != 0f && distance <= mMonsterAI.mSkillDistance && distance > 2f && angle < 90f) { mPathFider.isStopped = true; mMonsterAnimator.SetBool("isRun", false); mMonsterAI.ChangeState(mMonsterAI.mStates[(int)States.Skill1]); } else if (distance <= 2f && angle < 140f) { mPathFider.isStopped = true; mMonsterAnimator.SetBool("isRun", false); mMonsterAI.ChangeState(mMonsterAI.mStates[(int)States.NomalAttack]); } else { mPathFider.SetDestination(mTarget.transform.position); } } else { mPathFider.isStopped = true; mMonsterAnimator.SetBool("isRun", false); Collider[] colliders = Physics.OverlapSphere(mTransform.position, 35f, mTargetLayer); for (int i = 0; i < colliders.Length; ++i) { PlayerIG player = colliders[i].GetComponent <PlayerIG>(); if (player != null && !player.mIsDeath) { mTarget = player; break; } } } yield return(new WaitForSeconds(0.5f)); } yield break; }
public void Attack() { if (!mMonsterAI.mIsDeath) { Collider[] colliders = Physics.OverlapBox(mTransform.position, new Vector3(1f, 1f, 1.3f), Quaternion.identity, 1 << 9); for (int i = 0; i < colliders.Length; ++i) { PlayerIG player = colliders[i].GetComponent <PlayerIG>(); if (player != null && !player.mIsDeath) { player.mHp--; InGameEventToUI.Instance.OnEventReturnHp(player.mHp); break; } } } }
IEnumerator GoToPlayer() { Collider[] colliders = Physics.OverlapSphere(transform.position, 50f); for (int i = 0; i < colliders.Length; ++i) { PlayerIG player = colliders[i].GetComponent <PlayerIG>(); do { yield return(new WaitForSeconds(1f)); } while (!player.CheckAllMonsterDie()); if (player != null && !player.mIsDeath) { mTargetPosition = player.transform; yield break; } } }