// 피해 입기 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; }
private void OnTriggerEnter(Collider other) { if (other.CompareTag("ENEMY_ATTACK")) { DamageUIPooler.AttackInfo Final_AttackInfo = other.gameObject.GetComponent <MonsterDamage>().CalculationAttackDamage(); Damaged(Final_AttackInfo); } }
public DamageUIPooler.AttackInfo CalculationAttackDamage() { DamageUIPooler.AttackInfo attackInfo = playerManager.Attack(); // 계산식 attackInfo.damage = Mathf.RoundToInt((attackInfo.damage + attackPowerAdd) * attackPowerMul); attackInfo.damage += attackStatic; return(attackInfo); }
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); } }
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; }