Счетчик патронов в Unity3D

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Счетчик патронов в Unity3D

Сообщение stepa_igrodel 03 дек 2018, 19:52

Всем привет. Сделал скрипт со стрельбой, с помощью рэйкаста. Есть float количество патронов в магазине, и всего в инвентаре. Подскажите пожалуйста, как можно сделать счетчик патронов (текущее количество в магазине/всего в инвентаре)? Я сделал простую проверку, что если кол-во патронов магазине меньше 30 (в ак-47 столько) то можно перезарядится. Перезарядка - из всех патронов в инвентаре отнимается (30 - патроны в магазине), потом проигрывается звук и патроны в магазине = 30. Проблема в том, что когда в инвентаре патронов мало, при перезарядке появляется отрицательное значение. Спасибо за ответ.
stepa_igrodel
UNец
 
Сообщения: 5
Зарегистрирован: 24 авг 2018, 23:54

Re: Счетчик патронов в Unity3D

Сообщение stepa_igrodel 03 дек 2018, 19:54

if (Input.GetKeyDown(KeyCode.R) & curAmmo < 30)
{
allAmmo = allAmmo - (30 - curAmmo);
GetComponent<AudioSource>().PlayOneShot(Reload);
curAmmo = 30;
}
Вот сам фрагмент, где curAmmo - магазин, allAmmo - в инвентаре
stepa_igrodel
UNец
 
Сообщения: 5
Зарегистрирован: 24 авг 2018, 23:54

Re: Счетчик патронов в Unity3D

Сообщение sledo 16 янв 2019, 19:42

О, это очень просто.
Оружий у вас будет несколько, соответственно каждый магазин к нему имеет разные свойства. Поэтому проще всего сделать несколько ГО на сцене с модельками магазина, повесить на них скрипт описывающий их свойства, там сколько патронов, калибр, урон от пуль, к какому оружию подходит и т.д. А дальше просто делаете счетчик скорострельности оружия, ну например выстрел раз в секунду:
Синтаксис:
Используется 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;
  }
}
 
sledo
Старожил
 
Сообщения: 831
Зарегистрирован: 05 янв 2014, 15:44


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4