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

preview_player
Показать описание
В этом уроке рассказываю как правильно рассчитать скорость пули чтобы она прилетела в заданную точку.

Рекомендации по теме
Комментарии
Автор

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

justcore
Автор

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

mihailmatkovskij
Автор

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

МАЛДИ-ып
Автор

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

ДаниилСоловьев-эш
Автор

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

KsenjiaRegard
Автор

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

icefox
Автор

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

fresh
Автор

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

icefox
Автор

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

oleg_mongol
Автор

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

GroveStreet-Home
Автор

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

Aloe
Автор

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

или можно соеденить несколько частей пули с помощью 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()
{

if(explosionForceAmmon==true)
{
if(timeInstance<0.5f){
gameObject.GetComponent<Rigidbody>().AddRelativeForce(0, 0, force, ForceMode.Impulse);//;ждем некоторое время дя того чтобы сработал импульс
explosionForceAmmon=false;
}
else
{
if(timeInstance<=0.4f)
{
переместим на пулю
}
else
{
за пулей с помощью пустышки
}
else
{
gameObject.transform.rotation = поворот пустышки к пуле
timeInstance=0; //повторяем все сначала с перемещение пустышки позиций на позицию пули
}
}
}

// можете сделать колизию или триггер когда соприкасается с припятсвием либо взрывается или либо перестает срабатаыать поворот обьекта, а так когда он останваливаться, пуля, прикасанием с припятствием, оно никогда не падает в бок
//там могут быть ошибки я из памяти писал, но должно получится . главное писать потом проверять. задуманное сохраннить потом пригодится, и все будет круто, потом уже думать . Главное попоробавать!!
//и еще не используйте это на маленьких пулях это не пройзводительно с точки зрения игры.
//можете закручивать обьект для пущего эффекта!!! для нефизчных, gameObject.GetComponent<Rigidbody>().AddRelativeTorque(0, 0, 20) для физичных;

ilhanilhanDev
Автор

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

f-lish
Автор

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

ruslangolovchenko
Автор

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

НастяФедорова-ьь
Автор

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

maximko
Автор

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

АндрейПрокофьев-ед
Автор

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

Эстет-вв
Автор

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

sinlessdevil
Автор

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

Ketchuppp