Основы программирования: перемещение объекта с помощью скрипта. Input, if

Поделиться
HTML-код
  • Опубликовано: 22 сен 2024
  • #КурсыЯндексИгр В этом уроке напишем скрипт, позволяющий изменять положение объекта в пространстве, а также познакомимся с оператором if.
    Скрипт из урока лежит здесь: disk.yandex.ru...
    Следующее видео «Основы программирования: переменные и поля класса»: • Основы программировани...
    Удобная рабочая тетрадь по курсу: yandexgames-un...
    RUclips-канал Ильи Карельцева: / @eccentricgames
    Остались вопросы? Присоединяйтесь к нашему чату в Telegram для разработчиков игр на Unity, чтобы получить дополнительную информацию: t.me/yagamesunity
    Чтобы первыми узнавать о продуктах Яндекса для геймдева, подписывайтесь на наш канал «Яндекс Игры для Разработчиков»: / @yagamesdev

Комментарии • 56

  • @axbox
    @axbox Год назад +38

    Дружище, тебе бы записать свой собственный курс по С#. У тебя, наверное, самое доходчивое объяснение из всех, чьи ролики смотрел на ютубе по теме) 👍

  • @martoyas
    @martoyas Год назад +15

    Я тебя люблю мужик, особенно твой материал :), не один месяц искал инфу как сделать чтобы можно было двигать персонажем на клавиши W,S,A,D и при этом ещё иметь возможность покрутить камерой в разные стороны привязав её к мыши, хорошее объяснение и чтоб ещё понять сам код... Огромное тебе спасибо за материал!!!

  • @Life-wq4tl
    @Life-wq4tl Год назад +4

    Спасибо большое! Всё настолько понятно и просто - это редкость, серьезно! Смотрю много видео, читаю много, такой информации, как эта нет и на подобии не мог нормально сформировать у себя на уме и практике. Наткнулся сегодня, а оказался канал с загруженными видео - 2 и более месяца. Не так давно, это прям вдохновило, Яндекс ниже Ильи)

  • @eugenev423
    @eugenev423 Год назад +3

    Первый нормальный курс по c# для unity на ютуб, рекомендую

    • @yagamesdev
      @yagamesdev  Год назад

      Спасибо за высокую оценку нашего курса. Рады, что он помог вам в создании игр.

    • @СергейМартынов-ф4ю
      @СергейМартынов-ф4ю Год назад

      согласен. По C# также рекомендую курс на ютубе от #Simplecode. Мне очень зашел

  • @bloknot4956
    @bloknot4956 6 месяцев назад +2

    Как же он хорош. Все очень понятно объясняет даже для таких тупых людей как я ;)

    • @yagamesdev
      @yagamesdev  6 месяцев назад

      Здравствуйте. Рады, что курс вам понравился 🙂

  • @OkMiracle
    @OkMiracle 11 месяцев назад +1

    Прикольно=)))

  • @octopus9166
    @octopus9166 Год назад

    Лучший просто

  • @mem-tube-app
    @mem-tube-app Год назад +3

    А почему никто не говорит, что есть официальный бесплатный курс от Unity? Очень крутой. Правда на английском. Но это не должно стать проблемой.

    • @Gogsan
      @Gogsan Год назад +1

      скинь ссылку

    • @НикитаБельков-л5б
      @НикитаБельков-л5б Год назад

      @@Gogsan Unity Learn

    • @dolinakaktusovkoncert
      @dolinakaktusovkoncert Год назад

      Это, я думаю, его перевод

    • @yagamesdev
      @yagamesdev  Год назад +1

      Здравствуйте. Чтобы создать первую игру, достаточно пройти наш курс. Однако вы можете рассматривать и дополнительные источники :)

  • @СергейМартынов-ф4ю

    Почему мы используем Vector3 ? Я так понимаю, что третий вектор отвечает за ось Z . Так? Но при этом мы указываем все три координаты и можем смещать/вращать/масштабировать по всем осям. Тогда почему Vector 3 И что тогда Vector 1 и 2?

    • @MichaelSwatterzz
      @MichaelSwatterzz Год назад

      для таких любопытных как ты есть гугл.

    • @СергейМартынов-ф4ю
      @СергейМартынов-ф4ю Год назад +1

      @@MichaelSwatterzz если не знаешь - мог бы и пройти мимо. Твое мнение очень важно для нас.

  • @СергейМартынов-ф4ю

    Еще вопрос какой метод позволяет перехватывать тапы по экрану мобильных устройств ?

    • @yagamesdev
      @yagamesdev  Год назад +2

      Сергей, здравствуйте. Да, в Unity и C# можно использовать событие Input.touch, чтобы перехватывать тапы по экрану мобильных устройств. Делимся примером кода:
      // Проверка на сенсорный ввод
      if (Input.touchCount > 0) {
      // Обход всех прикосновений
      for (int i = 0; i < Input.touchCount; i++) {
      Touch touch = Input.GetTouch(i);
      // Проверка, что это был тап
      if (touch.phase == TouchPhase.Began) {
      // Ваш код обработки тапа
      }
      }
      }
      Эти строки проверяют наличие сенсорного ввода, затем проходят по всем тапам и проверяют, что фаза TouchPhase равна Began - это означает, что пользователь только что коснулся экрана, и тап только начался.

    • @СергейМартынов-ф4ю
      @СергейМартынов-ф4ю Год назад +1

      @@yagamesdev немного странный вопрос - учеников не берете? Я имею ввиду менторство?

  • @АлексейВарягин-т5т

    Вопрос. Повторил тот же алгоритм, что и лектор, закомментив предыдущие команды, но у меня куб вновь стал кубом, а у лектора - масштаб и поворот сохранились. В чем моя ошибка? И почему, если закомменченные команды неактивны, в видео они сохраняют активность?

    • @Shein_Vettons
      @Shein_Vettons 3 месяца назад

      Не сохранил изменения кода

  • @ahega0bossainsoft472
    @ahega0bossainsoft472 Месяц назад

    У меня проблема, мне VSCode не предлагает нормальную замену. Как решить проблему?

    • @yagamesdev
      @yagamesdev  Месяц назад

      Здравствуйте. В этом случае необходимо скачать расширение: clck.ru/3CFYCa. Затем установить его в Unity через «Package Manager: Visual Studio Editor».
      После этого необходимо открыть в «Unity Preferences» - «External Tools» - «External Script Editor» и выбрать или добавить «VSCode».

  • @xxyuliaxx8989
    @xxyuliaxx8989 2 месяца назад

    if (UnityEngine.Input.GetMouseButtonDown(1)). Здравствуйте! Скажите, пожалуйста, почему у меня перед вводом команды Input постоянно просит исправить на UnityEngine.Input. Большое спасибо!

    • @yagamesdev
      @yagamesdev  2 месяца назад

      Здравствуйте. Такое уведомление означает, что в скрипте присутствует подключение библиотек «using», которые также содержат класс «Input». Чтобы не было конфликтов, Unity дописывает предполагаемую библиотеку перед методом.

    • @xxyuliaxx8989
      @xxyuliaxx8989 2 месяца назад

      @@yagamesdev Огромное Вам спасибо!

  • @sleepless6740
    @sleepless6740 6 месяцев назад

    здравствуйте, а как сделать чтобы скрипт автоматически загружался в юнити, чтобы не пришлось постоянно запускать через сам визуал студио, а потом еще и проверять в юнити (допустим после мелких корректировок)

    • @yagamesdev
      @yagamesdev  6 месяцев назад

      Здравствуйте. Чтобы Unity мог правильно распознать нужную IDE, необходимо зафиксировать выбор в настройках. Для этого перейдите в «Edit», далее выберите «Preferences» - «External Tools» и в поле «External Script Editor» укажите вашу актуальную среду разработки. Это должно помочь.

  • @igorcoolman
    @igorcoolman Год назад +1

    поскольку я сишарп немного знаю про f сразу догадался и код написал раньше чем у вас )
    if (Input.GetKey(KeyCode.W))
    {
    transform.position = transform.position + new Vector3(0, 0.01f, 0);
    }
    if (Input.GetKey(KeyCode.S))
    {
    transform.position = transform.position + new Vector3(0, -0.01f, 0);
    }
    if (Input.GetKey(KeyCode.D))
    {
    transform.position = transform.position + new Vector3(0.01f, 0, 0);
    }
    if (Input.GetKey(KeyCode.A))
    {
    transform.position = transform.position + new Vector3(-0.01f, 0, 0);
    }
    а как через switch сделать?

    • @АртемийБобров-р2б
      @АртемийБобров-р2б 10 месяцев назад

      Понял как сделать тоже самое через switch?

    • @igorcoolman
      @igorcoolman 10 месяцев назад

      ​@@АртемийБобров-р2б
      // Получаем нажатую клавишу
      KeyCode key = Input.inputString[0];
      // Используем switch для проверки разных случаев
      switch (key)
      {
      // Если нажата клавиша W, двигаемся вверх
      case KeyCode.W:
      transform.position = transform.position + new Vector3(0, 0.01f, 0);
      break; // Выходим из switch
      // Если нажата клавиша S, двигаемся вниз
      case KeyCode.S:
      transform.position = transform.position + new Vector3(0, -0.01f, 0);
      break; // Выходим из switch
      // Если нажата клавиша D, двигаемся вправо
      case KeyCode.D:
      transform.position = transform.position + new Vector3(0.01f, 0, 0);
      break; // Выходим из switch
      // Если нажата клавиша A, двигаемся влево
      case KeyCode.A:
      transform.position = transform.position + new Vector3(-0.01f, 0, 0);
      break; // Выходим из switch
      // Если нажата другая клавиша, ничего не делаем
      default:
      break; // Выходим из switch
      }

    • @mr.underwood4569
      @mr.underwood4569 8 месяцев назад

      ​@@igorcoolman Проверил, не рабочий метод. Для KeyCode key = Input.inputString[0] нужно приведение типа: KeyCode key = (KeyCode)Input.inputString[0], а в таком случае сыплет в консоль ошибки о выходе за пределы массива на каждом кадре. Похоже на какой-то костыль требующий доработки, а не решение

  • @manontherun2489
    @manontherun2489 Год назад

    Подскажите какие дополнения нужно скачать в вижуал студио код что бы она видела скрипты которые используются в юнити и не нужно было их самому писать

    • @yagamesdev
      @yagamesdev  Год назад

      Здравствуйте. Чтобы Visual Studio Code корректно работала со скриптами Unity, необходимо установить Unity Debugger и C# Extension. Unity Debugger позволяет отлаживать скрипты Unity в Visual Studio Code. C# Extension помогает подсвечивать синтаксис и выполнять автодополнение кода для скриптов C# в Unity.

    • @manontherun2489
      @manontherun2489 Год назад

      @@yagamesdev почему то эти дополнения не работают, а может не те скачал. а для майкрасофт визуал так же они подходят или другие нужны?

  • @ALEX.AB12
    @ALEX.AB12 Год назад

    А в Visial Studio 2022 надо что то докачивать для юнити если да то что?

    • @yagamesdev
      @yagamesdev  Год назад

      Александр, здравствуйте. Чтобы Visual Studio Code корректно работала со скриптами Unity, можно установить Unity Debugger и C# Extension. Unity Debugger позволяет отлаживать скрипты Unity в Visual Studio Code. C# Extension помогает подсвечивать синтаксис и выполнять автодополнение кода для скриптов C# в Unity.

    • @ALEX.AB12
      @ALEX.AB12 Год назад

      @@yagamesdev спасибо

  • @Владислав-э5т2м
    @Владислав-э5т2м Год назад +1

    спасибо. почему может быть такое, что при написании кода не показывает возможные варианты команд, пока ее не напишешь один раз?

    • @antigames4656
      @antigames4656 Год назад +2

      Пересмотри видео установка юнити там расскажет

    • @andreyradostny
      @andreyradostny Год назад +2

      Мне помогло зайти в Unity в Edit > Preferences и там в строке External Script Editor выбрать Microsoft Visual Studio. Перезапустил студию и все заработало!

    • @akim53
      @akim53 Год назад +1

      @@andreyradostny от души👍

  • @ПавелСуханов-ц2х
    @ПавелСуханов-ц2х Год назад +1

    Команда transform.eulerAngles не работает одновременно для клавиатуры и мыши? Задал вращение мышкой вокруг оси у, а с клавиш q и e вокруг оси z. С мышки в итоге управляется, а с кнопок нет. Хотя если отключить строчку с командой для мыши, то вращение с клавиш работает. Или я что-то не так понимаю?
    if (Input.GetKey(KeyCode.Q)) //при нажатии Q
    {
    transform.eulerAngles += new Vector3(0, 0, 2); //Вращать по часовой стрелке вокруг z
    }
    if (Input.GetKey(KeyCode.E)) //при нажатии E
    {
    transform.eulerAngles += new Vector3(0, 0, -2); //Вращать против часовой вокруг z
    }
    transform.eulerAngles = new Vector3(0, Input.mousePosition.x, 0); //Вращать вокруг y

    • @andreyradostny
      @andreyradostny Год назад +2

      Смотри, весь код в методе выполняется по порядку, строчка за строчкой. Прежде, чем Unity выведет на экран новый кадр, она должна полностью завершить весь метод Update(). Теперь внимательно пройдись по всему методу по порядку строчка за строчкой глазами: сначала Unity спрашивает, нажал ли ты кнопки. Видит, что нажал и меняет значения углов объекта. НО! Пока еще не отрисовывает это на экране(!) Дальше Unity переходит к следующим строкам кода по порядку и в последней строке видит, что ты присваиваешь вращению по x и z ноль, а вращению по y - позицию мышки. И только теперь она отрисовывает кадр. То есть(!) неважно, что ты там вводил кнопкам. Своей последней строчкой ты просто все это заменяешь на (0, Input.mousePosition.x, 0).
      Если еще нужно, могу написать, как изменить твой код, чтобы работало и с кнопок, и с мыши. Удачи!

    • @yagamesdev
      @yagamesdev  Год назад

      Павел, здравствуйте. В коде видим, что значение eulerAngles по оси Z меняется на 0. Эту строчку можно заменить на следующую:
      transform.eulerAngles = new Vector3(0, Input.mousePosition.x, transform.eulerAngles.z)
      Тогда вращение должно сработать для мыши и клавиатуры.

  • @Даниилданков-я9п
    @Даниилданков-я9п Год назад +2

    Как сделать анимацию из игры poppy playtime

    • @timon1816
      @timon1816 Год назад +2

      выйди в окно плиз

    • @yagamesdev
      @yagamesdev  Год назад +1

      Даниил, здравствуйте. Подробнее о создании анимации и её добавлении в игру рассказываем в отдельном видеоуроке: clck.ru/34PFgR

    • @Defis_22
      @Defis_22 7 месяцев назад +1

      Почему?@@timon1816

  • @pispis3617
    @pispis3617 Год назад

    Какой-то в Unity не совсем стандартный c#
    Особо юнити никогда не интересовался, и решил просто для разнообразия этот плейлист изучить.
    С .net я уже очень хорошо знаком, т.к. работаю в этой области
    И очень удивился с конвенции именования и в целом стиля кода, который принят(?) в Unity
    Хотя походив по гит хабу я еще больше удивился, ведь там вообще везде все разное)
    В одном и том же листинге могут быть публичные поля и с большой и маленькой буквы.
    Рандомно кликал по проектам на гитхабе и такое было везде.
    Т.е получается у Unity вообще нет конвенции по стилю кода или она какая-то своя?

    • @Igorek055
      @Igorek055 Год назад

      Юнити использует модифицированный шарп, так что да, придется учиться по новой

    • @pispis3617
      @pispis3617 Год назад +1

      ​@@Igorek055 учиться по новой не придется)
      Единственное, это учить уже особенности движка, но в целом, даже для c# разраба уровня интерна - джуна будет оч просто. Ну, основы уж точно.
      Дальше основ не скажу, т.к. прошел курс больше для разнообразия, нежели для того, чтобы погрузиться в разработку на Unity.
      Ну и что касается "модифицированного" шарпа. На модифицированный он не похож, скорее на урезанный, т.к. там шарп 10 летней давности примерно)
      Единственное неудобство с которым я столкнулся, это несоблюдение официальной .net конвенции по стилю и именованию кода.
      А так, в остальном все очень просто, если учитывать, что пишешь на старом шарпе, то трудностей не возникает.