// 이부분 몬스터별로 데미지 줄수있게... parameter int형으로 만들고 호출해야할듯 몬스터 데미지도 각각해주고
    public void Damage(float damage)

    {
        // _state.state == CharacterState.State.Damage ||  이부분은 idle전환에서 문제가 많아서 빼버림
        if (_animator.GetCurrentAnimatorStateInfo(1).IsName("Damage"))
        {
            return;
        }
        Instantiate(_damagePrefab, _fxPosition.position, Quaternion.identity);

        _hpGager.HpDown(damage);

        _state._hp -= damage;

        StartCoroutine(dtCoroutinCall.AttackDamageShow(damageUIImage, damageUIText, damage));
        polyPlay.playPoly(5);



        // 플레이어의 상태를 데미지 상태로 변경함
        _state.state = CharacterState.State.Damage;
        // 피격 애니메이션을 실행함
        _animator.Play("Damage", 1);


        if (_state._hp <= 0)
        {
            for (int i = 0; i < colliders.Length; i++)
            {
                colliders[i].sharedMaterial = frictionMax;
            }


            deathInteract = false;
            _state._isDie = true;
            _animator.SetTrigger("Die");
            _animator.Play("Die");
            gameObject.tag   = "Untagged";      // 죽고나면 스캔안되고 안맞게
            gameObject.layer = 0;
            StartCoroutine(chatCon.ChatBoxOpener("엌ㅋㅋㅋ.."));
            DeadPannelOpen openD = GameObject.Find("ButtonPanel").GetComponent <DeadPannelOpen>();
            openD.DeathPannelOpen();
        }
    }
    public void Damage(float damage)
    {
        // 몬스터의 체력을 감소함
        if (_monsterState._isDie != true) // 에너미무브 업데이트 부분 걸러줬음
        {
            GameObject effect = Instantiate(_damageEffectPrefab, _damageEffectPos.position, Quaternion.identity);
        }
        _monsterState._hp -= damage;

        if (gameObject.name == "SkeletonSwordMan" || gameObject.name == "SkeletonArcher")
        {
            polyPlay.playPoly(2);
        }
        else if (gameObject.name == "Zombie")
        {
            polyPlay.playPoly(7);
        }
        else if (gameObject.name == "BossWoodGolem")
        {
            polyPlay.playPoly(6);
        }
        else if (gameObject.name == "Dragon")
        {
            polyPlay.playPoly(9);
        }
        StartCoroutine(dtCoroutinCall.AttackDamageShow(damageUIImage, damageUIText, damage));
        DamageFlipper();            // 뒤에서 공격받을시 좌우반전
        if (_monsterState._hp <= 0) // 에너미무브 업데이트 부분 걸러줬음
        {
            if (gameObject.name == "SkeletonSwordMan" || gameObject.name == "SkeletonArcher")
            {
                polyPlay.playPoly(3);
            }
            BossAppear.enemyDeathCount++;

            if (gameObject.tag == "BossEnemy")
            {
                bossIsDead.BossKilled();
            }

            Debug.Log(BossAppear.enemyDeathCount + "보스 카운트");

            bossGener.BossGen();

            _monsterState.state = CharacterState.State.Die;


            _animator.SetBool("Move", false);
            _monsterState._isDie = true;
            _animator.SetTrigger("Die");
            //_animator.Play("Die");
            gameObject.tag   = "Untagged";      // 죽고나면 스캔안되고 안맞게
            gameObject.layer = 0;
        }

        if (_monsterMovement != null)
        {
            // 피격당하면 0.5초간 이동을중지함
            _monsterMovement.IdleTimeStop(0.5f);
        }



        // 이펙트가 생성됩니다       // 예전에는 캐스팅이 필요했음 (Object형이라서) 반환형이.. 현재는 게임오브젝트형으로 리턴하기때문에 캐스팅불필요
        //_monsterState._hp >= 0 &&

        //  Destroy(effect, 0.25f); // 0.25초후에 이펙트 삭제 현재 오토디스트로이 해둠



        // 피격 애니메이션 재생
        if (_monsterState._isDie != true)
        {
            _animator.Play("Damage", 1); // 레이어 1에있는 데미지 재생
        }
    }