26 lines
791 B
C#

using System;
using UnityEngine;
public abstract class Weapon : MonoBehaviour
{
[Header("Ссылки")]
[SerializeField] protected GameObject ProjectilePrefab;
[SerializeField] protected Transform ShootPoint;
[Header("Настройки оружия")]
[SerializeField] protected float ReloadInterval = 5;
public GameObject Owner;
public int Ammo = 20;
public event Action<AbstractProjectile> OnShoot;
protected float lastShootTime = 0;
public float ReloadPercent => Mathf.Clamp01((Time.time - lastShootTime) / ReloadInterval);
public bool CanShoot => Time.time - lastShootTime >= ReloadInterval && Ammo > 0;
public abstract void Shoot();
public void InvokeShoot(AbstractProjectile projectile) => OnShoot?.Invoke(projectile);
}