Лучше использовать статическую переменную скорости снаряда, а угол высчитывать, как это сделано в реальном мире. Например танк. Чтоб попасть, там высчитывают угол выстрела, а скорость снаряда всегда одинаковая.
Честно, это очень-очень сложно😅. Я сам пробовал, суть в том, что в подобного рода задаче, где парабола проходит через 2 точки, возможно 2 варианта угла наклона(логично, настильная и не очень траектория). Даже если так, то придется кодом решать тригонометрические уравнения совершенно разнородного вида, одним словом, ужас)
кстати чтобы перевернулась пуля при стрельбе из ригидбоди на ,его месте создаем обьект пустышку и ждем немного пока пуля не отлетит , потом смотрим с пустышки на пулю и передаем поворот пустышки на пулю. или можно соеденить несколько частей пули с помощью 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
Илья, а что делать если нужно найти все углы и скорости удовлетворяющие пересечению с точкой? Не циклами пробегать же. Можете сделать уроки по стрельбе с опережением (куда стрелять, если известна скорость снаряда, а так же вектор цели и расстояние до неё в начальной точке) и урок объяснение quaternion'ов??
Спасибо, очень полезный урок. Приятно слушать, всё подробно описал. Обычно в расчёте a*t^2/2 для y пишут с минусом(вектор g вниз) подскажите, пожалуйста, почему минус здесь не пишем?
Прошу прощения, а как узнать не скорость а именно угол выстрела, зная всё остальное? Я понимаю, что для одного и того же случая подходит всегда 2 угла: прямой наводкой и навесом/артиллерийский, так сказать. Разумеется, есть и третий случай, когда невозможно дострелить из-за малой начальной скорости снаряда. Я раньше пытался решить такую задачу, но кроме банального метода с многократной подстановкой ничего в голову не приходило. Получалось недостаточно точно, да и хотелось более оптимизированное решение. Просто, как по мне, это гораздо более необходимая в жизни задачка, ибо чаще снаряд имеет конкретную скорость и нужно узнать именно угол для наведения.
Ага, и правда такая задача более актуальна. Ну так в двух словах не скажу. Но я делал это однажды примерно так же как в этом видео. Просто из формул другое надо выразить
@@EccentricGames пробовал, но не получалось. Ибо там решения 2 для угла альфа, а не одно. Не помню, как это в математике называется уже и как выглядело по итогу. Вот только решать такое я не умею, хотя и математик из меня меньше среднего. Ну а так то все равно спасибо за ответ.
Было бы замечательно,если бы вывел формулу изменения угла пушки при известной начальной скорости пули.Хотя,в принципе,это и сам как нибудь выведу. А вот вопрос в другом-как нарисовать сектор обстрела?Есть корабль с пушкой у которой есть определенный сектор ,куда можно стрелять не поворачивая сам корабль.То есть нужно нарисовать круг вокруг корабля и закрасить только сектор обстрела.КАК? Если у кого есть идеи,подскажите хотя бы как закрасить часть круга.Просто часть круга.Есть такая возможность в Unity? Автор, вообще супер объясняешь.Я,как совсем дно-программист тебя вполне понимаю.СПАСИБО.
@@KirillBreuss ок,спасибо! Как понимаю,вы шарите в юнити. У меня сейчас другая проблема нарисовалась.Может советом поможете? Есть скрипт управления движения камерой вокруг объекта. При Input.GetAxis("Mouse X") камера движется вокруг объекта в горизонтальной плоскости. При Input.GetAxis("Mouse Y") соот ветственно в вертикальной с определенными ограничениями. Так вот вопрос:возможно ли движение при Input.GetAxis("Mouse X") оставить прежним а вот при Input.GetAxis("Mouse Y") камера вращалась бы не вокруг ОБЪЕКТА в вертикальной плоскости а относительно СВОЕЙ оси right? То есть водить мышей вправо-влево - двигаться вокруг объекта ,а водить вверх-вниз - смотреть выше-ниже объекта. Возможно ли такое?
@@АндрейПрокофьев-е7д Проще скачать готовую камеру из AssetStore. Либо поищи уроки по запросу "летающая камера" или "fly camera". Если не будет нужной - хотя бы поймешь суть и копируешь нужные строчки. В самом трудном варианте придется учиться пользоваться кватернионами - Quaternion. Это благодаря им камера вращается либо вокруг объекта, либо вокруг какой-либо оси.
Так то да Но всё таки нужно изменять угол, а не скорость снаряда. То есть вывести из формулы уже не скорость, а угол. Я не математик, выводить так вообще у меня никогда нормально не получалось, так что тут я не подскажу. Сам ищу
Кое-что приметил! Нужно ограничить угол, чтобы нельзя было использовать 90 градусов, так как это выдаст баг из-за деления на ноль, значит можно добавить проверку на 90 градусов и изменять его например на 91
Спасибо! В школе физику не учу. Так как темы мне не нравятся. Но это видео меня шокировало. Потому что вы все просто и детально обясняете. Понятно и интересно. Спасиб большое ещё раз! Надеюсь в дальнейшем буду учить в школе физику с интересом
А зачем мы делаем вычитание векторов в самом начале? можно же quaternion.LookRotation просто сделать (target.transform.position.x, 0, target.transform.position.z , Vector3.up) вроде же и так работает, зачем нам находить направление если и так знаем таргет
3:46 Т.к. не оговорен частный случай, значит говоришь в общем случае. В общем случае это не правда. Частный случай, когда дальность при угле 45 градусов максимальна это условие что точка падения и точка бросания находятся на одной высоте. Если высоты отличаются, то максимальная дальность будет точно при другом угле. Это и из жизни очевидно. Если кидаем что-то на балкон, то становимся близко и кидаем вверх. Если кидаем куда-то вниз, то бросаем почти с нулевым углом к горизонту.
Спасибо за урок!! ) Не знаю почему , но у меня немного пуля перелетала врага, мне пришло переменную v ещё отнять - 1f , и после этого начал попадать цель. По-любому где-то сделал ошибку, но по я её не нашел
создаешь публичный метод типа "void" в нее бросаешь функционал стрельбы (без условия клика мышью), создаешь UI кнопку, добавляешь ей событие в "OnClick", там же указываешь объект на котором висит скрипт, в поле "No function" выбираешь свой скрипт, а потом выбираешь свой метод. Вуаля, все работает!
Здраствуйте, не подскажите как увеличить скорость пули? пытался сам, не получается. Могу через гравитацию, но это как то не то, менять общую гравитацию до - 100 нарпимер.
@@Rayvenor Воздух оказывает влияние на аэродинамическое сопротивление или коэффициент Сх - формы "головы" пули (снаряда). Масса связана с силой тяготения и инерцией, ну и с перегрузкой.
@@qazwsxqaz3163 в самом начале видео сказали, что воздухом пренебрегаем. На ускорение свободного падения масса не влияет, а траекторию определяет именно ускорение. При свободном падении веса нет, нет и перегрузки.
Надеюсь, я тоже когда-нибудь смогу так просто флексить физикой и математикой, а пока буду просто смотреть ваши уроки и узнавать новое)
Господи почему я нашел это видео только сейчас??? Оно гениально!!! Мужик, спасибо тебе огромное человеческое:)))
Уф, хорошо что я сейчас в 11 классе на физмате и прекрасно всё понимаю что ты делаешь!
Браааааатишка, научи понимать :DDD
@@ЛевТроцкий-ъ4щ Миня тожи я тожи 11 класс и нифига не панимаю но очень интересна!
@@Vjuh_and_kx жиза)))
Лучше использовать статическую переменную скорости снаряда, а угол высчитывать, как это сделано в реальном мире. Например танк. Чтоб попасть, там высчитывают угол выстрела, а скорость снаряда всегда одинаковая.
Честно, это очень-очень сложно😅. Я сам пробовал, суть в том, что в подобного рода задаче, где парабола проходит через 2 точки, возможно 2 варианта угла наклона(логично, настильная и не очень траектория). Даже если так, то придется кодом решать тригонометрические уравнения совершенно разнородного вида, одним словом, ужас)
кстати чтобы перевернулась пуля при стрельбе из ригидбоди на ,его месте создаем обьект пустышку и ждем немного пока пуля не отлетит , потом смотрим с пустышки на пулю и передаем поворот пустышки на пулю.
или можно соеденить несколько частей пули с помощью 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
Вот нафига это всё городить?) Просто делаешь пуле одну строчку: кватернион.lookTo(вектор скорости);
Не зря физику 2 года изучал. И тригонометрия тоже понадобилась
Все круто, продолжайте, очень полезно
Очень классно, мне как бывшему физику понравились математические выписки)
Илья, а что делать если нужно найти все углы и скорости удовлетворяющие пересечению с точкой? Не циклами пробегать же.
Можете сделать уроки по стрельбе с опережением (куда стрелять, если известна скорость снаряда, а так же вектор цели и расстояние до неё в начальной точке)
и урок объяснение quaternion'ов??
Действительно, потресяюще!
Увидев это, я понял что я настолько тупой, что дальше быть уже не может...
Да ладно тебе. Не стоит себя недооценивать. Просто ты излишне самокритичен
@@EccentricGames > Не стоит себя недооценивать.
Дальше быть может? :D
Спасибо, очень полезный урок. Приятно слушать, всё подробно описал. Обычно в расчёте a*t^2/2 для y пишут с минусом(вектор g вниз) подскажите, пожалуйста, почему минус здесь не пишем?
Возможно потому, что берется предзаданное значение, где оно, вероятно, уже с нужным знаком.
Прошу прощения, а как узнать не скорость а именно угол выстрела, зная всё остальное?
Я понимаю, что для одного и того же случая подходит всегда 2 угла: прямой наводкой и навесом/артиллерийский, так сказать.
Разумеется, есть и третий случай, когда невозможно дострелить из-за малой начальной скорости снаряда.
Я раньше пытался решить такую задачу, но кроме банального метода с многократной подстановкой ничего в голову не приходило.
Получалось недостаточно точно, да и хотелось более оптимизированное решение.
Просто, как по мне, это гораздо более необходимая в жизни задачка, ибо чаще снаряд имеет конкретную скорость и нужно узнать именно угол для наведения.
Ага, и правда такая задача более актуальна. Ну так в двух словах не скажу. Но я делал это однажды примерно так же как в этом видео. Просто из формул другое надо выразить
@@EccentricGames пробовал, но не получалось. Ибо там решения 2 для угла альфа, а не одно. Не помню, как это в математике называется уже и как выглядело по итогу. Вот только решать такое я не умею, хотя и математик из меня меньше среднего.
Ну а так то все равно спасибо за ответ.
При заданной скорости должно быть одно решение. Или нет решения если дискриминант < 0
Вот скажи, как рассчитать с скорость движения корабля от одной планеты до другой. прям чтоб с ускорением и торможением.
F = ma
Нужно не скорость пули менять, а положение орудия.
Да, так будет более логично, теперь осталось выразить не скорость, а угол вылета
@@Hello_worl станьте, пожалуйста, если найдёте :
чего-то у меня не работает но я передаю импульс
Максимальная дальность полета пули НИКОГДА не будет при угле возвышения 45° не читайте и не смотрите баллистику в изложении случайных людей
🤢🤮
А при каком угле тогда достигается максимальная дальность?
Оба не правы.
Автор просто гений! Я повторил всё и был очень сильно удивлён тому что в результате получилось.
Математика творит чудеса)
На сколько ты гениальный, я бы умер пока сам думал
Было бы замечательно,если бы вывел формулу изменения угла пушки при известной начальной скорости пули.Хотя,в принципе,это и сам как нибудь выведу.
А вот вопрос в другом-как нарисовать сектор обстрела?Есть корабль с пушкой у которой есть определенный сектор ,куда можно стрелять не поворачивая сам корабль.То есть нужно нарисовать круг вокруг корабля и закрасить только сектор обстрела.КАК?
Если у кого есть идеи,подскажите хотя бы как закрасить часть круга.Просто часть круга.Есть такая возможность в Unity?
Автор, вообще супер объясняешь.Я,как совсем дно-программист тебя вполне понимаю.СПАСИБО.
th-cam.com/video/yR2F4gmF8_4/w-d-xo.html Если урок не годится погугли ещё по запросу Clamping Rotation
@@KirillBreuss ок,спасибо!
Как понимаю,вы шарите в юнити.
У меня сейчас другая проблема нарисовалась.Может советом поможете?
Есть скрипт управления движения камерой вокруг объекта. При Input.GetAxis("Mouse X") камера движется вокруг объекта в горизонтальной плоскости. При Input.GetAxis("Mouse Y") соот ветственно в вертикальной с определенными ограничениями.
Так вот вопрос:возможно ли движение при Input.GetAxis("Mouse X") оставить прежним а вот при Input.GetAxis("Mouse Y") камера вращалась бы не вокруг ОБЪЕКТА в вертикальной плоскости а относительно СВОЕЙ оси right?
То есть водить мышей вправо-влево - двигаться вокруг объекта ,а водить вверх-вниз - смотреть выше-ниже объекта.
Возможно ли такое?
@@АндрейПрокофьев-е7д Проще скачать готовую камеру из AssetStore. Либо поищи уроки по запросу "летающая камера" или "fly camera". Если не будет нужной - хотя бы поймешь суть и копируешь нужные строчки. В самом трудном варианте придется учиться пользоваться кватернионами - Quaternion. Это благодаря им камера вращается либо вокруг объекта, либо вокруг какой-либо оси.
Таким образом можно же миномёт сделать?
Так то да
Но всё таки нужно изменять угол, а не скорость снаряда. То есть вывести из формулы уже не скорость, а угол. Я не математик, выводить так вообще у меня никогда нормально не получалось, так что тут я не подскажу. Сам ищу
Кое-что приметил! Нужно ограничить угол, чтобы нельзя было использовать 90 градусов, так как это выдаст баг из-за деления на ноль, значит можно добавить проверку на 90 градусов и изменять его например на 91
Не могу понять, как сделать так с осями объекта? 10:40
Понял. Локальные координаты слева вверху
Если делать стрельбу, то только так!) Классный урок
Ты меня спас
Спасибо! В школе физику не учу. Так как темы мне не нравятся. Но это видео меня шокировало. Потому что вы все просто и детально обясняете. Понятно и интересно. Спасиб большое ещё раз! Надеюсь в дальнейшем буду учить в школе физику с интересом
Потрясающе!
А зачем мы делаем вычитание векторов в самом начале? можно же quaternion.LookRotation просто сделать (target.transform.position.x, 0, target.transform.position.z , Vector3.up) вроде же и так работает, зачем нам находить направление если и так знаем таргет
Я новичок в unity, но маюсь с переводом этой системы в 2D уже который день. Можешь подсказать что изменять нужно, а то у меня уже идею закончились...
3:46 Т.к. не оговорен частный случай, значит говоришь в общем случае. В общем случае это не правда.
Частный случай, когда дальность при угле 45 градусов максимальна это условие что точка падения и точка бросания находятся на одной высоте. Если высоты отличаются, то максимальная дальность будет точно при другом угле. Это и из жизни очевидно. Если кидаем что-то на балкон, то становимся близко и кидаем вверх. Если кидаем куда-то вниз, то бросаем почти с нулевым углом к горизонту.
Сижу и ловлю себя на мысли,что ничего не понимаю)) А просто скопировать и вставить не хочется...
КЛАСС
Почувствовала себя тупой, потому что даже обычный горизонтальный бросок не смогла реализовать😢
Спасибо за урок!! ) Не знаю почему , но у меня немного пуля перелетала врага, мне пришло переменную v ещё отнять - 1f , и после этого начал попадать цель. По-любому где-то сделал ошибку, но по я её не нашел
ПОЧЕМУ У МЕНЯ ШУТЕР ПО Rotation ПЕРЕХОДИТ С -90 В 0
Хорошее пособие по написанию чита для Раста.))
А конкретное значение t ?
Ответь плиз
21:50 поскажите а как сделать это через button?Ну типо если я нажимают на button то стрелять
создаешь публичный метод типа "void" в нее бросаешь функционал стрельбы (без условия клика мышью), создаешь UI кнопку, добавляешь ей событие в "OnClick", там же указываешь объект на котором висит скрипт, в поле "No function" выбираешь свой скрипт, а потом выбираешь свой метод. Вуаля, все работает!
Просто Гений
Good Job! ^_^
Здраствуйте, не подскажите как увеличить скорость пули? пытался сам, не получается. Могу через гравитацию, но это как то не то, менять общую гравитацию до - 100 нарпимер.
Может уже поздно, но получилось ли у вас изменить скорость пули не меняя гравитацию?
Уменьшай угол, тогда скорость увеличится.
@@Rayvenor неощутимая разница
@@рагнаросповелительогня-л1ъ Не поздно, еще не разобрал)
Угол менять, другого выбора нету.
С этим кодом надо ставить около 80-89 градусов для значительного увеличения скорости
Желательно добавить расчеты с учетом массы пули (снаряда), а также в случае с трассирующей пулей, учет изменения массы в полете.
Мы же тут игры делаем просто, а не полёт настоящих пуль предсказываем))
тогда уж сопротивление воздуха а не масса
Если воздухом пренебрегаем, то от массы не зависит.
@@Rayvenor
Воздух оказывает влияние на аэродинамическое сопротивление или коэффициент Сх - формы "головы" пули (снаряда). Масса связана с силой тяготения и инерцией, ну и с перегрузкой.
@@qazwsxqaz3163 в самом начале видео сказали, что воздухом пренебрегаем. На ускорение свободного падения масса не влияет, а траекторию определяет именно ускорение. При свободном падении веса нет, нет и перегрузки.
Видосы крутые, но ток поменьше бы кринжа
Мне 31. Уже не так просто видеть границу кринжа
@@EccentricGames даже в 32 можно это выучить, брат, это как программирование))
@@biggayal6056 боюсь придется посмотреть слишком много юмористических шоу
Какая разница какая версия? Суть то в траектории.
НОЛЬ обьяснений. НОЛЬ доходчивости.
Ценность видео - просто перемотай в конец и перепиши, подставив свой префаб и настройки
Ого, ничего себе, оказывается, что нужно знать матем и физику хотя бы на уровне школьной программы!) Иначе зачем в геймдев полезли?
Math.Rad()