// 이부분 몬스터별로 데미지 줄수있게... 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에있는 데미지 재생 } }