Счетчик патронов в Unity3D
Добавлено:
03 дек 2018, 19:52
stepa_igrodel
Всем привет. Сделал скрипт со стрельбой, с помощью рэйкаста. Есть float количество патронов в магазине, и всего в инвентаре. Подскажите пожалуйста, как можно сделать счетчик патронов (текущее количество в магазине/всего в инвентаре)? Я сделал простую проверку, что если кол-во патронов магазине меньше 30 (в ак-47 столько) то можно перезарядится. Перезарядка - из всех патронов в инвентаре отнимается (30 - патроны в магазине), потом проигрывается звук и патроны в магазине = 30. Проблема в том, что когда в инвентаре патронов мало, при перезарядке появляется отрицательное значение. Спасибо за ответ.
Re: Счетчик патронов в Unity3D
Добавлено:
03 дек 2018, 19:54
stepa_igrodel
if (Input.GetKeyDown(KeyCode.R) & curAmmo < 30)
{
allAmmo = allAmmo - (30 - curAmmo);
GetComponent<AudioSource>().PlayOneShot(Reload);
curAmmo = 30;
}
Вот сам фрагмент, где curAmmo - магазин, allAmmo - в инвентаре
Re: Счетчик патронов в Unity3D
Добавлено:
16 янв 2019, 19:42
sledo
О, это очень просто.
Оружий у вас будет несколько, соответственно каждый магазин к нему имеет разные свойства. Поэтому проще всего сделать несколько ГО на сцене с модельками магазина, повесить на них скрипт описывающий их свойства, там сколько патронов, калибр, урон от пуль, к какому оружию подходит и т.д. А дальше просто делаете счетчик скорострельности оружия, ну например выстрел раз в секунду:
Используется csharp
float time = 0;
if(Input.GetKeyDown(KeyCode.R))
{
выстрел();
}
if(Input.GetKeyUp(KeyCode.R))
{
time = 0;
}
void Выстрел()
{
time -= Time.deltaTime;
if(time < 0 && магазин.количество_Патронов > 0)
{
магазин.количество_Патронов--; //количество патронов должно иметь значение int. С float он будет не корректно считать.
звук_Выстрела.Play();
стреляем рейкастом
time = 1;
}
else
{
звук_Затвора.Play();
магазин.количество_Патронов = 0;
}
}