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, которая выполняет перезарядку.
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, которая выполняет перезарядку.
Тут не один скрипт нужен. Советую почитать документации. В случае возникновения вопросов можете обращаться к ИИ. Perplexity в помощь
Похожие вопросы
- Скрипт на юнити 3д
- Нужны скрипты в Unity 3д.
- Всем привет , проблема с юнити файлом
- Code Review моего скрипта.
- Можно ли считать расстояние до LayerMask в юнити?
- Сделал код в юнити, но он не работает. Как исправить ошибку?
- Нужен человек для Юнити
- Roblox Studio скрипт
- Roblox studio,не могу сделать скрипт для поведения npc
- Помощь с скриптом