/// <summary> /// 피격 받음 /// </summary> /// <param name="dmg"></param> public void HitDmage(Transform target, int dmg) { int ranSfx = Random.Range(0, _sfx.Length); Manager.GameManager.INSTANCE.SFXPlay(_audio, _sfx[ranSfx]); //피격 if (charData.NHp > 0 && charData.IsLive && !charData.IsRoll) { charData.NHp -= dmg; //피격 애니메이션 실행 //(기절 상태가 아닐때, 스킬을 사용하고 있지 않을때) //Player hit 애니메이션으로 다중 적에게 공격 받으면 빠져나올수가 없어 애니를 실행하지 않는다 if (!charData.IsStun && !charData.IsSkill && !isPlayer) { StartCoroutine(HitDelay()); } charData.Nav.velocity = Vector3.zero; charData.Nav.isStopped = true; } //다운 if (charData.NHp <= 0 && charData.IsLive) { charData.IsLive = false; charData.IsStun = false; //기절 상태 해제 후 쓰러짐 charData.IsWalk = false; charData.IsRun = false; charData.IsAttack = false; charData.IsSkill = false; charData.IsReload = false; charData.NHp = 0; //aniCtrl.AniStun(charData.IsStun); //쓰러진는 애니메이션 charData.AniCtrl.AniDown(); if (!isPlayer) { StartCoroutine(EnemyDis()); } } //플레이어에 적용 되어 있을 경우 //피격 시 UI 동기화 if (isPlayer) { playerUI.HpBar(); PlayerCtrl shake = GetComponent <PlayerCtrl>(); shake.ShakeCam.ShakeCamAct(0.1f, 0.3f, 0.3f); //피격 효과 //Post 프로세싱 효과 추가 } //적 캐릭터일때 else if (!isPlayer) { //Boss 캐릭터이면 BossUi ui = GetComponent <BossUi>(); if (ui != null) { ui.HPFill(charData.NHp, charData.NMaxHp); } } if (charData.IsLive) { if (!charData.IsRoll) { DmgValUI <int>(target, dmg); } else if (charData.IsRoll) { DmgValUI <int>(target, 0); } } }