Files
ClearTheZone/Assets/Scripts/WeaponReload.cs
T

76 lines
2.2 KiB
C#

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);
}
}