montzions ui pausenmenü ui lebns ui nachladen pausen menü neues digsein
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
using UnityEngine;
|
||||
using TMPro; // WICHTIG: Erforderlich für TextMeshPro!
|
||||
|
||||
public class AmmoUI : MonoBehaviour
|
||||
{
|
||||
[Header("Referenzen")]
|
||||
[Tooltip("Ziehe hier dein TextMeshPro Text-Objekt rein")]
|
||||
public TextMeshProUGUI ammoText;
|
||||
|
||||
[Tooltip("Ziehe hier das Objekt mit deinem WeaponReload-Skript rein")]
|
||||
public WeaponReload weapon;
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (ammoText != null && weapon != null)
|
||||
{
|
||||
// Zeigt z. B. "30 / 30" im Textfeld an
|
||||
ammoText.text = weapon.currentAmmo + " / " + weapon.maxAmmo;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d012b46a6ebe1e34598d94f22195a13e
|
||||
@@ -0,0 +1,18 @@
|
||||
using UnityEngine;
|
||||
using TMPro; // Erforderlich für TextMeshPro
|
||||
|
||||
public class HealthUI : MonoBehaviour
|
||||
{
|
||||
[Header("Referenzen")]
|
||||
public TextMeshProUGUI healthText;
|
||||
public PlayerHealth playerHealth;
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (healthText != null && playerHealth != null)
|
||||
{
|
||||
// Zeigt z. B. "HP: 100 / 100" an
|
||||
healthText.text = "HP: " + playerHealth.currentHealth + " / " + playerHealth.maxHealth;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2820b4f73584b72408d4d3609f434403
|
||||
@@ -0,0 +1,42 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class PauseMenu : MonoBehaviour
|
||||
{
|
||||
[Header("UI Elemente")]
|
||||
public GameObject pauseMenuUI; // Das Pausenmenü-Panel
|
||||
public GameObject hudUI; // Die Lebens- und Munitionsanzeige (HUD)
|
||||
|
||||
private bool isPaused = false;
|
||||
|
||||
void Update()
|
||||
{
|
||||
// Überprüft, ob die ESC-Taste gedrückt wurde
|
||||
if (Input.GetKeyDown(KeyCode.Escape))
|
||||
{
|
||||
if (isPaused)
|
||||
{
|
||||
ResumeGame();
|
||||
}
|
||||
else
|
||||
{
|
||||
PauseGame();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void PauseGame()
|
||||
{
|
||||
pauseMenuUI.SetActive(true); // Pausenmenü anzeigen
|
||||
hudUI.SetActive(false); // Lebens- & Munitionsanzeige ausblenden
|
||||
Time.timeScale = 0f; // Spielzeit anhalten (optional, aber empfohlen)
|
||||
isPaused = true;
|
||||
}
|
||||
|
||||
public void ResumeGame()
|
||||
{
|
||||
pauseMenuUI.SetActive(false); // Pausenmenü ausblenden
|
||||
hudUI.SetActive(true); // Lebens- & Munitionsanzeige wieder anzeigen
|
||||
Time.timeScale = 1f; // Spielzeit weiterlaufen lassen
|
||||
isPaused = false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e4a749aaa304ec14b98518e63fda8cdb
|
||||
@@ -1,51 +1,53 @@
|
||||
//Oliver
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class PausenManager : MonoBehaviour
|
||||
{
|
||||
private bool isOn = false;
|
||||
[SerializeField] GameObject Can;
|
||||
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
||||
void Start()
|
||||
{
|
||||
Can.SetActive(false);
|
||||
}
|
||||
// Damit andere Skripte (wie deine Waffe) wissen, ob pausiert ist
|
||||
public static bool GameIsPaused = false;
|
||||
|
||||
// Ziehe dein Pause-Menü UI-Panel hier im Inspector rein
|
||||
public GameObject pauseMenuUI;
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.Escape))
|
||||
{
|
||||
isOn = true;
|
||||
show();
|
||||
if (GameIsPaused)
|
||||
{
|
||||
Resume();
|
||||
}
|
||||
else
|
||||
{
|
||||
Pause();
|
||||
}
|
||||
}
|
||||
}
|
||||
public void show()
|
||||
|
||||
public void Resume()
|
||||
{
|
||||
if(isOn = true)
|
||||
{
|
||||
Can.SetActive(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Can.SetActive(false);
|
||||
}
|
||||
pauseMenuUI.SetActive(false);
|
||||
Time.timeScale = 1f; // Zeit läuft wieder normal
|
||||
GameIsPaused = false;
|
||||
|
||||
// Maus wieder verstecken und im Spiel festhalten
|
||||
Cursor.visible = false;
|
||||
Cursor.lockState = CursorLockMode.Locked;
|
||||
}
|
||||
public void going()
|
||||
|
||||
void Pause()
|
||||
{
|
||||
Can.SetActive(false);
|
||||
show();
|
||||
pauseMenuUI.SetActive(true);
|
||||
Time.timeScale = 0f; // Spiel friert ein
|
||||
GameIsPaused = true;
|
||||
|
||||
// Maus anzeigen und entsperren, damit du klicken kannst
|
||||
Cursor.visible = true;
|
||||
Cursor.lockState = CursorLockMode.None;
|
||||
}
|
||||
public void lobby (string sceneName)
|
||||
|
||||
public void QuitGame()
|
||||
{
|
||||
SceneManager.LoadScene(sceneName);
|
||||
Debug.Log("Spiel wird verlassen...");
|
||||
Application.Quit(); // Beendet das Spiel (funktioniert nur im fertigen Build, nicht im Editor)
|
||||
}
|
||||
public void Quit()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
UnityEditor.EditorApplication.isPlaying = false;
|
||||
#else
|
||||
Application.Quit();
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerHealth : MonoBehaviour
|
||||
{
|
||||
[Header("Gesundheitseinstellungen")]
|
||||
public int maxHealth = 100;
|
||||
public int currentHealth;
|
||||
|
||||
void Start()
|
||||
{
|
||||
currentHealth = maxHealth; // Startet mit 100 Leben
|
||||
}
|
||||
|
||||
// Funktion, um Schaden zu bekommen
|
||||
public void TakeDamage(int damage)
|
||||
{
|
||||
currentHealth -= damage;
|
||||
|
||||
// Verhindert, dass das Leben unter 0 fällt
|
||||
if (currentHealth < 0)
|
||||
{
|
||||
currentHealth = 0;
|
||||
}
|
||||
|
||||
if (currentHealth == 0)
|
||||
{
|
||||
Die();
|
||||
}
|
||||
}
|
||||
|
||||
// Optional: Funktion zum Heilen
|
||||
public void Heal(int amount)
|
||||
{
|
||||
currentHealth += amount;
|
||||
if (currentHealth > maxHealth)
|
||||
{
|
||||
currentHealth = maxHealth;
|
||||
}
|
||||
}
|
||||
|
||||
void Die()
|
||||
{
|
||||
Debug.Log("Spieler ist gestorben!");
|
||||
// Hier kannst du z.B. einen Game Over Screen anzeigen oder die Szene neu laden
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db77dcbb78925b543b84b7789c1903b9
|
||||
@@ -0,0 +1,76 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
public class WeaponReload : MonoBehaviour
|
||||
{
|
||||
[Header("Munitionseinstellungen")]
|
||||
public int maxAmmo = 30; // Maximale Munition im Magazin
|
||||
public int currentAmmo; // Aktuelle Munition
|
||||
public float reloadTime = 1.5f; // Wie lange das Nachladen dauert (in Sekunden)
|
||||
|
||||
private bool isReloading = false; // Verhindert Doppelklicks / Aktionen während des Nachladens
|
||||
|
||||
void Start()
|
||||
{
|
||||
currentAmmo = maxAmmo; // Beim Start ist das Magazin voll
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
// Während nachgeladen wird, keine Aktionen zulassen
|
||||
if (isReloading)
|
||||
return;
|
||||
|
||||
// --- PUNKT 1: Auslösen auf R ODER wenn Magazin leer ist ---
|
||||
// 1. Manuelles Nachladen mit R (nur wenn Magazin nicht schon voll ist)
|
||||
if (Input.GetKeyDown(KeyCode.R) && currentAmmo < maxAmmo)
|
||||
{
|
||||
StartCoroutine(Reload());
|
||||
return;
|
||||
}
|
||||
|
||||
// 2. Automatisches Nachladen beim Schießen, wenn das Magazin leer (<= 0) ist
|
||||
if (Input.GetButtonDown("Fire1"))
|
||||
{
|
||||
if (currentAmmo > 0)
|
||||
{
|
||||
Shoot();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Magazin ist leer -> automatisch nachladen!
|
||||
StartCoroutine(Reload());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Shoot()
|
||||
{
|
||||
// Nur schießen, wenn das Pausemenü NICHT offen ist
|
||||
if (PausenManager.GameIsPaused) return;
|
||||
|
||||
currentAmmo--;
|
||||
Debug.Log("Schuss gefeuert! Verbleibende Munition: " + currentAmmo);
|
||||
|
||||
// Hier deinen normalen Schuss-Code einfügen (Raycast, Bullet-Prefab, Ton etc.)
|
||||
}
|
||||
|
||||
// Coroutine für die Nachlade-Verzögerung
|
||||
IEnumerator Reload()
|
||||
{
|
||||
isReloading = true;
|
||||
Debug.Log("Nachladen gestartet...");
|
||||
|
||||
// Hier könntest du z.B. eine Nachlade-Animation oder einen Sound abspielen:
|
||||
// animator.SetTrigger("Reload");
|
||||
|
||||
// Warten, bis die Nachladezeit abgelaufen ist
|
||||
yield return new WaitForSeconds(reloadTime);
|
||||
|
||||
// --- PUNKT 2: Munition wieder voll wenn fertig ---
|
||||
currentAmmo = maxAmmo;
|
||||
|
||||
isReloading = false;
|
||||
Debug.Log("Nachladen abgeschlossen! Munition wieder voll: " + currentAmmo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a3d6d3eb3a1b7845801a59185c759a3
|
||||
Reference in New Issue
Block a user