/
arti4
/
CourseWork
Обзор
Документация
Войти
/
arti4
/
CourseWork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Scriptes/PlayerHealth.cs
129 строк
3 KB
arti4
Загрузить файлы в «Scriptes»
01 июн 2025, 11:57
01 июн 2025, 11:57
3eddd7a
Код
Авторство
О чём код?
using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using UnityEngine.Audio; public class PlayerHealth : MonoBehaviour { public int maxHealth = 100; public int increaseHealth = 50; private int currentHealth; public int medicineHealth; public int increaseMedicine; public GameObject healthEffect; public Image healthBar; [SerializeField] private AudioSource audioSource; [SerializeField] private AudioClip healthSound; [Header("Audio Settings")] public AudioMixer audioMixer; private float currentVolume; public GameObject gameOverMenu; public Button restartButton; public Button mainMenuButton; [SerializeField] private Shooting shootingScript; [SerializeField] private Crosshair crosshairScript; [SerializeField] private PauseMenu pauseMenu; private void Start() { currentHealth = maxHealth; int level = LevelProgress.GetReachedLevel(); //��������� ������ �������� if (level == 2) { maxHealth += increaseHealth; medicineHealth += increaseMedicine; } else if (level == 3) { maxHealth += increaseHealth * 2; medicineHealth += increaseMedicine*2; } else if (level >= 4) { maxHealth += increaseHealth * 3; medicineHealth += increaseMedicine*3; } currentHealth = maxHealth; UpdateHealthBar(); currentVolume = PlayerPrefs.GetFloat("Game", 1f); SetVolume(currentVolume); } private void Update() { if (currentHealth <= 0) { pauseMenu.PlayerDied(); } } //��������� ����� public void TakeDamage(int damage) { currentHealth -= damage; if (currentHealth < 0) currentHealth = 0; UpdateHealthBar(); if (currentHealth <= 0) { Die(); } } //���������� ������ �� �� ������ private void UpdateHealthBar() { if (healthBar != null) { healthBar.fillAmount = (float)currentHealth / maxHealth; } } //������ private void Die() { pauseMenu.PlayerDied(); } //��������������� � �������� private void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Medicine")) { if (currentHealth != maxHealth) { AudioSource.PlayClipAtPoint(healthSound, transform.position); if (currentHealth + medicineHealth > maxHealth) { currentHealth = maxHealth; } else { currentHealth = medicineHealth + currentHealth; } UpdateHealthBar(); GameObject effect = Instantiate(healthEffect, transform.position, Quaternion.identity); Destroy(effect, 0.2f); Destroy(other.gameObject); } } } //��������� ����� private void SetVolume(float volume) { audioMixer.SetFloat("Game", Mathf.Log10(volume) * 20f); } public void UpdateVolume(float volume) { currentVolume = volume; SetVolume(currentVolume); PlayerPrefs.SetFloat("Game", currentVolume); PlayerPrefs.Save(); } }