Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        if (Target == null)
        {
            //_targetDistance = 100f;
            Debug.Log("플레이어 타겟 찾기");

            GameObject[] Monsters = GameObject.FindGameObjectsWithTag(targetType);

            if (Monsters.Length <= 0)
            {
                Debug.Log("게임종료");
                _anim.PlayAnimation(CPlayerStat.State.Idle);
            }

            foreach (GameObject Monster in Monsters)
            {
                float dis = Vector3.Distance(transform.position, Monster.transform.position);

                if (_targetDistance > dis)
                {
                    Debug.Log("플레이어 찾음");
                    _targetDistance = dis;
                    Target          = Monster;
                }
            }
        }



        if (Target != null)
        {
            Vector3 targetPos = Target.transform.position - transform.position;
            transform.rotation = Quaternion.LookRotation(targetPos);
            float dis = Vector3.Distance(transform.position, Target.transform.position);
            if (dis < 1)
            {
                _attack.NormalAttack(Target);
                _navMeshAgent.Stop();
                return;
            }
            else
            {
                _anim.PlayAnimation(CPlayerStat.State.Move);
            }

            _navMeshAgent.SetDestination(Target.transform.position);
            _navMeshAgent.Resume();


            if (CGameManager.getInstance.PlayerState(gameObject, "Attack"))
            {
                return;
            }


            _anim.PlayAnimation(CPlayerStat.State.Move);
        }
    }
 public void Hit(float damage)
 {
     hp -= damage;
     StartCoroutine("HitEffectCoroutine");
     Debug.Log(gameObject.name + "의 남은 체력 : " + hp.ToString());
     if (hp <= 0)
     {
         _anim.PlayAnimation(CPlayerStat.State.Die);
         Destroy(gameObject, 2f);
         GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
         foreach (GameObject player in players)
         {
             if (takeHitPlayer.name == player.name)
             {
                 player.SendMessage("ExpUp", 10f);
             }
         }
     }
 }
Beispiel #3
0
 public void NormalAttack(GameObject target)
 {
     _anim.PlayAnimation(CPlayerStat.State.Attack);
 }