コード例 #1
0
    // 피해 입기
    public void Damaged(DamageUIPooler.AttackInfo attackInfo)
    {
        Debug.Log("플레이어가 피해를 입음 : " + attackInfo.damage);

        if (isDie)
        {
            return;
        }

        Camera.main.GetComponent <CameraCtrl>().PlayerDamaged(0.5f);

        int virtualHp = playerInfo.currHp - attackInfo.damage;

        if (virtualHp < 0)
        {
            virtualHp = 0;

            // 사망 판정
            isDie = true;
            setAnimTrigger(AnimationType.DEATH);
            GameUiManager.instance.ShowPlayerDie();
        }
        else
        {
            setAnimTrigger(AnimationType.DAMAGE);
        }

        playerInfo.currHp = virtualHp;
    }
コード例 #2
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("ENEMY_ATTACK"))
        {
            DamageUIPooler.AttackInfo Final_AttackInfo = other.gameObject.GetComponent <MonsterDamage>().CalculationAttackDamage();

            Damaged(Final_AttackInfo);
        }
    }
コード例 #3
0
    public DamageUIPooler.AttackInfo CalculationAttackDamage()
    {
        DamageUIPooler.AttackInfo attackInfo = playerManager.Attack();

        // 계산식
        attackInfo.damage  = Mathf.RoundToInt((attackInfo.damage + attackPowerAdd) * attackPowerMul);
        attackInfo.damage += attackStatic;

        return(attackInfo);
    }
コード例 #4
0
    private void OnTriggerEnter(Collider other)
    {
        if (isDie)
        {
            return;
        }

        if (other.CompareTag("PLAYER_ATTACK"))
        {
            DamageUIPooler.AttackInfo Final_AttackInfo = other.gameObject.GetComponent <AttackDamage>().CalculationAttackDamage();

            Damaged(Final_AttackInfo);
        }
    }
コード例 #5
0
    public void Damaged(DamageUIPooler.AttackInfo attackInfo)
    {
        PlayerManager playerManager = GameManager.instance.playerManager;

        // 데미지 빼기
        float damagedHp = this.currHp - attackInfo.damage;

        // 데미지 UI 생성
        GameObject damageUI = damageUIPooler.GetPooledObject(attackInfo);

        damageUI.transform.position = monsterTr.position + Vector3.up * scaleFactor.y;
        damageUI.transform.LookAt(playerTr);
        damageUI.SetActive(true);

        // Hit Effect 생성
        GameObject hitEffect = ParticlePooler.instance.GetPooledObject(ParticlePooler.ParticleType.HIT);

        if (hitEffect != null)
        {
            hitEffect.transform.position = monsterTr.position + Vector3.up * scaleFactor.y + monsterTr.transform.forward * 1f;
            hitEffect.GetComponent <ParticleScaler>().ParticleScaleChange(scaleFactor);
            hitEffect.SetActive(true);
        }

        // 피가 0 이하이면 죽음
        if (damagedHp <= 0f)
        {
            damagedHp = 0f;
            isDie     = true;
            playerManager.MonsterKillEvent(this);
        }

        // 피해 적용
        this.currHp = damagedHp;
        hpBarScript.SetHpValue(this.currHp);

        if (this.currHp <= angryHp) // 피 50퍼센트 이하이면
        {
            if (isAngry == false)
            {
                BossAnger(); // 보스 화남
            }
        }

        // 죽지 않았다면 데미지 입는 애니메이션
        // anim.SetTrigger("DAMAGE");
        nvAgent.isStopped = true;
    }