@Necro9898

Как сделать так, чтобы каждый if выполнался одновременно?

Всем привет!
Я работаю над игрой на движке Unity (2D)
Как сделать так чтобы каждый if выполнался "одновременно' а не сверху в низ ( я знаю что код всегда выполняется сверху вниз, но как я это могу "обойти" )

Что мне нужно от кода: Если я зажимаю клавишу DownArrow и потом ( например ) клавишу UpArrow, FireSphere создавалась уже на последней нажатой клавише. ( Русский мой второй язык, если я не понятно обяснился, я постараюсь исправить сообщение ).

Код:
if (Input.GetButton("RightArrow") && Time.time > timeToFire)
        {
            timeToFire = Time.time + 1 / fireRate;
            Instantiate(fireSphere, firePoint.position, firePoint.rotation);
        }

        if (Input.GetButton("LeftArrow") && Time.time > timeToFire)
        {
            timeToFire = Time.time + 1 / fireRate;
            Instantiate(fireSphere, firePoint.position, firePoint.rotation);
        }

        if (Input.GetButton("UpArrow") && Time.time > timeToFire)
        {
            timeToFire = Time.time + 1 / fireRate;
            Instantiate(fireSphere, firePoint.position, firePoint.rotation);
        }

        if (Input.GetButton("DownArrow") && Time.time > timeToFire)
        {
            timeToFire = Time.time + 1 / fireRate;
            Instantiate(fireSphere, firePoint.position, firePoint.rotation);
        }


Спасибо!
  • Вопрос задан
  • 221 просмотр
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Проверяйте не отдельные клавиши, а сочетания:
var isLeftPressed = Input.GetButton("LeftArrow");
var isUpPressed = Input.GetButton("UpArrow");
var isRightPressed = Input.GetButton("RightArrow");
var isDownPressed = Input.GetButton("DownArrow");
if (isUpPressed && isDownPressed && Time.time > timeToFire)
{
    timeToFire = Time.time + 1 / fireRate;
    Instantiate(fireSphere, firePoint.position, firePoint.rotation);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
У вас должен быть всего лишь одно место создания.
Т.е. ход мыслей такой:
createBall = false
if UP
{
   if beforeDOWN {
      createBall = true
   }
}
if createBall 
{
   Instantiate(...)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы