Баллистическая траектория пули в Unity (перезалил с моего старого канала)

Поделиться
HTML-код
  • Опубликовано: 17 дек 2024

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

  • @justcore
    @justcore 2 года назад +14

    Надеюсь, я тоже когда-нибудь смогу так просто флексить физикой и математикой, а пока буду просто смотреть ваши уроки и узнавать новое)

  • @mihailmatkovskij9350
    @mihailmatkovskij9350 3 года назад +8

    Автор просто гений! Я повторил всё и был очень сильно удивлён тому что в результате получилось.

    • @iTyca
      @iTyca 3 года назад +1

      Математика творит чудеса)

  • @МАЛДИ-ы4п
    @МАЛДИ-ы4п 2 года назад +6

    Господи почему я нашел это видео только сейчас??? Оно гениально!!! Мужик, спасибо тебе огромное человеческое:)))

  • @ДаниилСоловьев-э6ш
    @ДаниилСоловьев-э6ш 4 года назад +8

    Очень классно, мне как бывшему физику понравились математические выписки)

  • @icefox2853
    @icefox2853 3 года назад +12

    Уф, хорошо что я сейчас в 11 классе на физмате и прекрасно всё понимаю что ты делаешь!

    • @ЛевТроцкий-ъ4щ
      @ЛевТроцкий-ъ4щ 2 года назад +1

      Браааааатишка, научи понимать :DDD

    • @Vjuh_and_kx
      @Vjuh_and_kx 2 года назад +2

      @@ЛевТроцкий-ъ4щ Миня тожи я тожи 11 класс и нифига не панимаю но очень интересна!

    • @ЛевТроцкий-ъ4щ
      @ЛевТроцкий-ъ4щ 2 года назад +2

      @@Vjuh_and_kx жиза)))

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

    Спасибо! В школе физику не учу. Так как темы мне не нравятся. Но это видео меня шокировало. Потому что вы все просто и детально обясняете. Понятно и интересно. Спасиб большое ещё раз! Надеюсь в дальнейшем буду учить в школе физику с интересом

  • @oleg_mongol228
    @oleg_mongol228 2 года назад +2

    На сколько ты гениальный, я бы умер пока сам думал

  • @icefox2853
    @icefox2853 8 месяцев назад +1

    Кое-что приметил! Нужно ограничить угол, чтобы нельзя было использовать 90 градусов, так как это выдаст баг из-за деления на ноль, значит можно добавить проверку на 90 градусов и изменять его например на 91

  • @f-lish8927
    @f-lish8927 4 года назад +3

    Все круто, продолжайте, очень полезно

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

    Не зря физику 2 года изучал. И тригонометрия тоже понадобилась

  • @Magic__Man
    @Magic__Man 2 года назад +1

    Потрясающе!

  • @GroveStreet-Home
    @GroveStreet-Home 2 года назад +1

    Если делать стрельбу, то только так!) Классный урок

  • @Alo3e
    @Alo3e 2 года назад +6

    Лучше использовать статическую переменную скорости снаряда, а угол высчитывать, как это сделано в реальном мире. Например танк. Чтоб попасть, там высчитывают угол выстрела, а скорость снаряда всегда одинаковая.

    • @Misha-775
      @Misha-775 2 года назад

      Честно, это очень-очень сложно😅. Я сам пробовал, суть в том, что в подобного рода задаче, где парабола проходит через 2 точки, возможно 2 варианта угла наклона(логично, настильная и не очень траектория). Даже если так, то придется кодом решать тригонометрические уравнения совершенно разнородного вида, одним словом, ужас)

  • @ruslangolovchenko6797
    @ruslangolovchenko6797 3 года назад

    Хорошее пособие по написанию чита для Раста.))

  • @ilhanilhanDev
    @ilhanilhanDev 4 года назад +4

    кстати чтобы перевернулась пуля при стрельбе из ригидбоди на ,его месте создаем обьект пустышку и ждем немного пока пуля не отлетит , потом смотрим с пустышки на пулю и передаем поворот пустышки на пулю.
    или можно соеденить несколько частей пули с помощью fixedJoint и передаем разные веса основе пули и его наконечнику,должно получится главное не соеденять фиксед джойнтом родителя с его дочерю , знаю инцест дело семейное ,но все же не стоит.
    public GameObject emptyObj; //преваб обьект пустышки
    public GameObject cloneEmptyObj; //клон создаваемого обьекта для контроля им
    public float timeInstance; //время , создание обьектов и управление им
    public bool explosionForceAmmon=true; //взрыв силы оружья
    public float force=100f//сила импульса для полета
    public void Start()
    {
    cloneEmptyObj=Instateate(emptyObj, gameObject.transform.position,gameObject.transform.rotation)
    }
    public void Update()
    {
    explosionForceAmmon+=Time.deltaTime;
    if(explosionForceAmmon==true)
    {
    if(timeInstance

    • @VonBreuss
      @VonBreuss 3 года назад

      Вот нафига это всё городить?) Просто делаешь пуле одну строчку: кватернион.lookTo(вектор скорости);

  • @mister1313x
    @mister1313x 2 года назад

    Действительно, потресяюще!

  • @НастяФедорова-ь8ь
    @НастяФедорова-ь8ь 2 года назад +2

    Илья, а что делать если нужно найти все углы и скорости удовлетворяющие пересечению с точкой? Не циклами пробегать же.
    Можете сделать уроки по стрельбе с опережением (куда стрелять, если известна скорость снаряда, а так же вектор цели и расстояние до неё в начальной точке)
    и урок объяснение quaternion'ов??

  • @Эстет-в1в
    @Эстет-в1в 2 года назад +1

    Не могу понять, как сделать так с осями объекта? 10:40

    • @Эстет-в1в
      @Эстет-в1в 2 года назад +2

      Понял. Локальные координаты слева вверху

  • @maximko3072
    @maximko3072 2 года назад

    А зачем мы делаем вычитание векторов в самом начале? можно же quaternion.LookRotation просто сделать (target.transform.position.x, 0, target.transform.position.z , Vector3.up) вроде же и так работает, зачем нам находить направление если и так знаем таргет

  • @maxbigil6603
    @maxbigil6603 7 месяцев назад

    Ты меня спас

  • @РинатКинзябаев-щ2ю
    @РинатКинзябаев-щ2ю 2 года назад

    Просто Гений

  • @АндрейПрокофьев-е7д
    @АндрейПрокофьев-е7д 3 года назад +3

    Было бы замечательно,если бы вывел формулу изменения угла пушки при известной начальной скорости пули.Хотя,в принципе,это и сам как нибудь выведу.
    А вот вопрос в другом-как нарисовать сектор обстрела?Есть корабль с пушкой у которой есть определенный сектор ,куда можно стрелять не поворачивая сам корабль.То есть нужно нарисовать круг вокруг корабля и закрасить только сектор обстрела.КАК?
    Если у кого есть идеи,подскажите хотя бы как закрасить часть круга.Просто часть круга.Есть такая возможность в Unity?
    Автор, вообще супер объясняешь.Я,как совсем дно-программист тебя вполне понимаю.СПАСИБО.

    • @VonBreuss
      @VonBreuss 3 года назад +1

      ruclips.net/video/yR2F4gmF8_4/видео.html Если урок не годится погугли ещё по запросу Clamping Rotation

    • @АндрейПрокофьев-е7д
      @АндрейПрокофьев-е7д 3 года назад

      ​@@VonBreuss ок,спасибо!
      Как понимаю,вы шарите в юнити.
      У меня сейчас другая проблема нарисовалась.Может советом поможете?
      Есть скрипт управления движения камерой вокруг объекта. При Input.GetAxis("Mouse X") камера движется вокруг объекта в горизонтальной плоскости. При Input.GetAxis("Mouse Y") соот ветственно в вертикальной с определенными ограничениями.
      Так вот вопрос:возможно ли движение при Input.GetAxis("Mouse X") оставить прежним а вот при Input.GetAxis("Mouse Y") камера вращалась бы не вокруг ОБЪЕКТА в вертикальной плоскости а относительно СВОЕЙ оси right?
      То есть водить мышей вправо-влево - двигаться вокруг объекта ,а водить вверх-вниз - смотреть выше-ниже объекта.
      Возможно ли такое?

    • @VonBreuss
      @VonBreuss 3 года назад +1

      @@АндрейПрокофьев-е7д Проще скачать готовую камеру из AssetStore. Либо поищи уроки по запросу "летающая камера" или "fly camera". Если не будет нужной - хотя бы поймешь суть и копируешь нужные строчки. В самом трудном варианте придется учиться пользоваться кватернионами - Quaternion. Это благодаря им камера вращается либо вокруг объекта, либо вокруг какой-либо оси.

  • @skrip1099
    @skrip1099 2 года назад

    21:50 поскажите а как сделать это через button?Ну типо если я нажимают на button то стрелять

    • @СтепанШейгас-т1ы
      @СтепанШейгас-т1ы Год назад

      создаешь публичный метод типа "void" в нее бросаешь функционал стрельбы (без условия клика мышью), создаешь UI кнопку, добавляешь ей событие в "OnClick", там же указываешь объект на котором висит скрипт, в поле "No function" выбираешь свой скрипт, а потом выбираешь свой метод. Вуаля, все работает!

  • @sinlessdevil
    @sinlessdevil 3 года назад

    Спасибо за урок!! ) Не знаю почему , но у меня немного пуля перелетала врага, мне пришло переменную v ещё отнять - 1f , и после этого начал попадать цель. По-любому где-то сделал ошибку, но по я её не нашел

  • @Ketchuppp115
    @Ketchuppp115 2 года назад

    Я новичок в unity, но маюсь с переводом этой системы в 2D уже который день. Можешь подсказать что изменять нужно, а то у меня уже идею закончились...

  • @Rayvenor
    @Rayvenor 2 года назад

    3:46 Т.к. не оговорен частный случай, значит говоришь в общем случае. В общем случае это не правда.
    Частный случай, когда дальность при угле 45 градусов максимальна это условие что точка падения и точка бросания находятся на одной высоте. Если высоты отличаются, то максимальная дальность будет точно при другом угле. Это и из жизни очевидно. Если кидаем что-то на балкон, то становимся близко и кидаем вверх. Если кидаем куда-то вниз, то бросаем почти с нулевым углом к горизонту.

  • @alexlysov7883
    @alexlysov7883 3 года назад +1

    КЛАСС

  • @PIVKOooo
    @PIVKOooo 2 года назад

    Прошу прощения, а как узнать не скорость а именно угол выстрела, зная всё остальное?
    Я понимаю, что для одного и того же случая подходит всегда 2 угла: прямой наводкой и навесом/артиллерийский, так сказать.
    Разумеется, есть и третий случай, когда невозможно дострелить из-за малой начальной скорости снаряда.
    Я раньше пытался решить такую задачу, но кроме банального метода с многократной подстановкой ничего в голову не приходило.
    Получалось недостаточно точно, да и хотелось более оптимизированное решение.
    Просто, как по мне, это гораздо более необходимая в жизни задачка, ибо чаще снаряд имеет конкретную скорость и нужно узнать именно угол для наведения.

    • @EccentricGames
      @EccentricGames  2 года назад +1

      Ага, и правда такая задача более актуальна. Ну так в двух словах не скажу. Но я делал это однажды примерно так же как в этом видео. Просто из формул другое надо выразить

    • @PIVKOooo
      @PIVKOooo 2 года назад

      @@EccentricGames пробовал, но не получалось. Ибо там решения 2 для угла альфа, а не одно. Не помню, как это в математике называется уже и как выглядело по итогу. Вот только решать такое я не умею, хотя и математик из меня меньше среднего.
      Ну а так то все равно спасибо за ответ.

    • @EccentricGames
      @EccentricGames  2 года назад

      При заданной скорости должно быть одно решение. Или нет решения если дискриминант < 0

  • @ariko7715
    @ariko7715 3 года назад

    Спасибо, очень полезный урок. Приятно слушать, всё подробно описал. Обычно в расчёте a*t^2/2 для y пишут с минусом(вектор g вниз) подскажите, пожалуйста, почему минус здесь не пишем?

    • @urgian
      @urgian 2 года назад

      Возможно потому, что берется предзаданное значение, где оно, вероятно, уже с нужным знаком.

  • @qazwsxqaz3163
    @qazwsxqaz3163 2 года назад

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

    • @EccentricGames
      @EccentricGames  2 года назад +1

      Мы же тут игры делаем просто, а не полёт настоящих пуль предсказываем))

    • @Max-qj2fh
      @Max-qj2fh 2 года назад

      тогда уж сопротивление воздуха а не масса

    • @Rayvenor
      @Rayvenor 2 года назад

      Если воздухом пренебрегаем, то от массы не зависит.

    • @qazwsxqaz3163
      @qazwsxqaz3163 2 года назад

      @@Rayvenor
      Воздух оказывает влияние на аэродинамическое сопротивление или коэффициент Сх - формы "головы" пули (снаряда). Масса связана с силой тяготения и инерцией, ну и с перегрузкой.

    • @Rayvenor
      @Rayvenor 2 года назад

      @@qazwsxqaz3163 в самом начале видео сказали, что воздухом пренебрегаем. На ускорение свободного падения масса не влияет, а траекторию определяет именно ускорение. При свободном падении веса нет, нет и перегрузки.

  • @-LGK
    @-LGK 3 года назад

    Здраствуйте, не подскажите как увеличить скорость пули? пытался сам, не получается. Могу через гравитацию, но это как то не то, менять общую гравитацию до - 100 нарпимер.

    • @rgnaros
      @rgnaros 2 года назад

      Может уже поздно, но получилось ли у вас изменить скорость пули не меняя гравитацию?

    • @Rayvenor
      @Rayvenor 2 года назад

      Уменьшай угол, тогда скорость увеличится.

    • @-LGK
      @-LGK 2 года назад

      @@Rayvenor неощутимая разница

    • @-LGK
      @-LGK 2 года назад

      @@rgnaros Не поздно, еще не разобрал)

    • @apogee...
      @apogee... 11 месяцев назад

      Угол менять, другого выбора нету.
      С этим кодом надо ставить около 80-89 градусов для значительного увеличения скорости

  • @ДмитрийШевелев-ь3щ
    @ДмитрийШевелев-ь3щ 2 года назад

    А конкретное значение t ?

  • @CyberAngel2OOO
    @CyberAngel2OOO 4 года назад

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

  • @maxim.h876
    @maxim.h876 Год назад +1

    Таким образом можно же миномёт сделать?

    • @apogee...
      @apogee... 11 месяцев назад

      Так то да
      Но всё таки нужно изменять угол, а не скорость снаряда. То есть вывести из формулы уже не скорость, а угол. Я не математик, выводить так вообще у меня никогда нормально не получалось, так что тут я не подскажу. Сам ищу

  • @hanmayujiro1433
    @hanmayujiro1433 3 года назад

    Good Job! ^_^

  • @ИгорьНосач-я2е
    @ИгорьНосач-я2е 3 года назад

    ПОЧЕМУ У МЕНЯ ШУТЕР ПО Rotation ПЕРЕХОДИТ С -90 В 0

  • @mad_batm
    @mad_batm 3 года назад

    Почувствовала себя тупой, потому что даже обычный горизонтальный бросок не смогла реализовать😢

  • @WeLoveCreatingGames
    @WeLoveCreatingGames 2 года назад

    Сижу и ловлю себя на мысли,что ничего не понимаю)) А просто скопировать и вставить не хочется...

  • @ДмитрийШевелев-ь3щ
    @ДмитрийШевелев-ь3щ 2 года назад

    чего-то у меня не работает но я передаю импульс

  • @ИгорьСтрельцов-щ5с
    @ИгорьСтрельцов-щ5с 4 года назад +3

    Нужно не скорость пули менять, а положение орудия.

    • @Hello_worl
      @Hello_worl 4 года назад +1

      Да, так будет более логично, теперь осталось выразить не скорость, а угол вылета

    • @thevortex6512
      @thevortex6512 4 года назад +1

      @@Hello_worl станьте, пожалуйста, если найдёте :

  • @ИгорьНосач-я2е
    @ИгорьНосач-я2е 3 года назад

    Ответь плиз

  • @biggayal6056
    @biggayal6056 3 года назад

    Видосы крутые, но ток поменьше бы кринжа

    • @EccentricGames
      @EccentricGames  3 года назад

      Мне 31. Уже не так просто видеть границу кринжа

    • @biggayal6056
      @biggayal6056 3 года назад

      @@EccentricGames даже в 32 можно это выучить, брат, это как программирование))

    • @EccentricGames
      @EccentricGames  3 года назад +1

      @@biggayal6056 боюсь придется посмотреть слишком много юмористических шоу

  • @ВалерийВалерьевич-с8р

    Максимальная дальность полета пули НИКОГДА не будет при угле возвышения 45° не читайте и не смотрите баллистику в изложении случайных людей

    • @EccentricGames
      @EccentricGames  3 года назад

      🤢🤮

    • @JackFastGame
      @JackFastGame 2 года назад

      А при каком угле тогда достигается максимальная дальность?

    • @Rayvenor
      @Rayvenor 2 года назад

      Оба не правы.

  • @YashchiK
    @YashchiK 2 года назад +1

    НОЛЬ обьяснений. НОЛЬ доходчивости.
    Ценность видео - просто перемотай в конец и перепиши, подставив свой префаб и настройки

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

      Ого, ничего себе, оказывается, что нужно знать матем и физику хотя бы на уровне школьной программы!) Иначе зачем в геймдев полезли?

  • @Alo3e
    @Alo3e 2 года назад

    Math.Rad()