MiniGames/Assets/Scripts/BlockDrop/BlockDrop_PlayerShooter3D.cs

63 lines
1.6 KiB
C#
Raw Normal View History

using UnityEngine;
public class BlockDrop_PlayerShooter3D : MonoBehaviour
{
[Header("References")]
public Transform muzzle;
public GameObject bulletPrefab;
public GameObject berryBombPrefab;
[Header("Shooting Settings")]
public float fireRate = 0.25f;
[Header("Ammo")]
public int maxBerryAmmo = 3;
public float berryRegenCooldown = 8f;
private float nextFire;
private float berryRegenTimer;
void Update()
{
// Regenerate berry ammo over time
if (BlockDrop_GameManager3D.Instance.CurrentBerryAmmo < maxBerryAmmo)
{
berryRegenTimer -= Time.deltaTime;
if (berryRegenTimer <= 0f)
{
BlockDrop_GameManager3D.Instance.AddBerryAmmo(1);
berryRegenTimer = berryRegenCooldown;
}
}
}
// 🔫 UI button for shooting normal bullets
public void OnShootBullet()
{
if (Time.time >= nextFire)
{
Shoot(bulletPrefab);
nextFire = Time.time + fireRate;
}
}
// 💣 UI button for shooting berry bombs
public void OnShootBerryBomb()
{
if (BlockDrop_GameManager3D.Instance.CurrentBerryAmmo > 0)
{
Shoot(berryBombPrefab);
BlockDrop_GameManager3D.Instance.ConsumeBerryAmmo(1);
berryRegenTimer = berryRegenCooldown;
}
}
private void Shoot(GameObject prefab)
{
if (prefab != null && muzzle != null)
{
Instantiate(prefab, muzzle.position, muzzle.rotation);
}
}
}