C#

Скрипт на юнити 3д

Здравствуйте, Подскажите пожалуйста скрипт на оружие с перезарядкой и уроном в юнити 3д
using UnityEngine;

public class Gun : MonoBehaviour
{
public int damage = 10;
public float range = 100f;
public float fireRate = 0.1f;
public int maxAmmo = 30;
public float reloadTime = 1f;

private int currentAmmo;
private bool isReloading = false;
private float nextTimeToFire = 0f;

public Camera fpsCam;
public ParticleSystem muzzleFlash;
public GameObject impactEffect;
public AudioSource gunshotSound;
public AudioSource reloadSound;

void Start()
{
currentAmmo = maxAmmo;
}

void OnEnable()
{
isReloading = false;
ReloadSound.Stop();
}

void Update()
{
if (isReloading)
return;

if (currentAmmo <= 0)
{
StartCoroutine(Reload());
return;
}

if (Input.GetButton("Fire1") && Time.time >= nextTimeToFire)
{
nextTimeToFire = Time.time + 1f / fireRate;
Shoot();
}
}

void Shoot()
{
muzzleFlash.Play();
gunshotSound.Play();

currentAmmo--;

RaycastHit hit;
if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
{
Debug.Log( hit.transform.name );
Enemy enemy = hit.transform.GetComponent<Enemy>();
if (enemy != null)
{
enemy.TakeDamage(damage);
}

GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}

IEnumerator Reload()
{
isReloading = true;
Debug.Log("Reloading...");

reloadSound.Play();

yield return new WaitForSeconds(reloadTime);

currentAmmo = maxAmmo;
isReloading = false;
}
}
В этом скрипте мы используем переменные для хранения значений для урона, дальности, скорости стрельбы, количества патронов, времени перезарядки, а также ссылки на различные игровые объекты, такие как камера, эффекты вспышки и звуковые эффекты.

Функции Update и Shoot отвечают за стрельбу, в то время как функция Reload управляет перезарядкой. При нажатии на левую кнопку мыши (и при выполнении условий) вызывается функция Shoot, в которой выполняется лучевой выстрел и игровые объекты получают урон. При нажатии на клавишу «R» (и при выполнении условий) вызывается функция Reload, которая выполняет перезарядку.
Alex L
Alex L
166
Лучший ответ
Тут не один скрипт нужен. Советую почитать документации. В случае возникновения вопросов можете обращаться к ИИ. Perplexity в помощь