Пример #1
0
            /// <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);
                    }
                }
            }