12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using UnityEngine;
- using UnityEngine.AI;
- using UnityEngine.UI;
- public class EnemyHealth : MonoBehaviour
- {
- public int startingHealth = 100;
- public int currentHealth;
- public float sinkSpeed = 2.5f;
- public int scoreValue = 10;
- public float Exp;
- public AudioClip deathClip;
- Animator anim;
- AudioSource enemyAudio;
- bool isDead;
- bool playerDead;
- ParticleSystem hitparticles;
- CapsuleCollider capsulecollider;
- bool isSinking;
- public GameObject HpDisplay;
- public Image HpBar;
- public GameObject kusuri;
- PlayerHealth player;
- void Awake()
- {
- anim = GetComponent<Animator>();
- enemyAudio = GetComponent<AudioSource>();
-
- hitparticles = GetComponentInChildren<ParticleSystem>();
- capsulecollider = GetComponent<CapsuleCollider>();
- currentHealth = startingHealth;
- player = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerHealth>();
- }
- void Update()
- {
- if (isSinking)
- {
- transform.Translate(-Vector3.up * sinkSpeed * Time.deltaTime);
- }
- Transform camera = Camera.main.transform;
- HpDisplay.transform.LookAt(camera);
- HpBar.fillAmount = (float)currentHealth / (float)startingHealth;
- }
- public void TakeDamage(int amount,Vector3 hitPoint)
- {
- if (isDead)
- return;
- enemyAudio.Play();
-
- currentHealth -= amount;
- hitparticles.transform.position = hitPoint;
- hitparticles.Play();
- if (currentHealth <= 0 && !isDead)
- {
- Death();
- }
- }
- void Death()
- {
- isDead = true;
- System.Array.ForEach(GetComponents<Collider>(),col=>col.enabled = false);
- anim.SetTrigger("Dead");
- enemyAudio.clip = deathClip;
- enemyAudio.Play();
- if(Random.Range(0,100) < 8)
- {
- Instantiate(kusuri, transform.position+new Vector3(0,0.5f,0), Quaternion.identity);
- }
- }
- public void StartSinking()
- {
- GetComponent<NavMeshAgent>().enabled = false;
- GetComponent<Rigidbody>().isKinematic = true;
- isSinking = true;
- ScoreManager.score += scoreValue;
- player.ExpUpdate(Exp);
- Destroy(gameObject, 2f);
- }
-
- }
|