как определить угол вхождения относительно нормали?
|
|
KolekSDK | Дата: Четверг, 03 Ноября 2016, 08:50 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Товарищи!!! подскажите как определить угол вхождения hit.normal(для условия) допустим : если угол вхождения больше 50 градусов относительно нормали то (Рикошет по N направлению! ) Я всю справку перерыл но так и не нашёл как обратится(определить) угол вхождения относительно нормали!
Сообщение отредактировал KolekSDK - Четверг, 03 Ноября 2016, 09:48 |
|
| |
falcoware | Дата: Четверг, 03 Ноября 2016, 10:07 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| alfa = arccos(dot_prod(v1, v2));
|
|
| |
KolekSDK | Дата: Четверг, 03 Ноября 2016, 10:14 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата falcoware ( ) alfa = arccos(dot_prod(v1, v2)); Товарищъ!! А имеется-ли у тебя ссылки по данной конструкции? а то чёт все термины в API перекопал! Нема!
нашёл почти похожую конструкцию
Код public static Vector3 Reflect(Vector3 inDirection, Vector3 inNormal) { return (((Vector3) ((-2f * Dot(inNormal, inDirection)) * inNormal)) + inDirection); }
Сейчас буду пока пытаться прикрутить к ней формулу (a, b) = |a|*|b|*cos(a^b) а точнее нарисовать вектора!
Сообщение отредактировал KolekSDK - Четверг, 03 Ноября 2016, 10:22 |
|
| |
beril | Дата: Четверг, 03 Ноября 2016, 12:16 | Сообщение # 4 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата falcoware ( ) alfa = arccos(dot_prod(v1, v2)); Mathf.Acos(Vector3.Dot(vector1, vector2)) - типа этого должно получиться, пробуй )
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
KolekSDK | Дата: Пятница, 04 Ноября 2016, 05:58 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Спасибо всем всё получилось =)
|
|
| |
EchoIT | Дата: Пятница, 04 Ноября 2016, 11:39 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Цитата Mathf.Acos(Vector3.Dot(vector1, vector2)) - типа этого должно получиться, пробуй )
Так можно проверить угол. Может будет ещё полезно вот это (если сам не наткнулся): Для рикошета подойдёт данная конструкция: Vector3 Reflect(Vector3 inDirection, Vector3 inNormal). inDirection - направление входного луча, inNormal - это hit.normal. Вернёт аналогичный по длине вектор направления входного луча, только уже отражённый.
Долгожданный анонсик: State of War
Сообщение отредактировал EchoIT - Пятница, 04 Ноября 2016, 11:40 |
|
| |
KolekSDK | Дата: Пятница, 11 Ноября 2016, 00:44 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Так ребят всем ещё раз огромное спасибо! Всё посчитал всё гуд! Но остаётся ещё пару вопросов! Т.к попользовался физикой! АААА не айс! не Triger не Colision ! Не успевают срабатывать при скорости выше 200-300 м/с по unity М шкале! Решил использовать Рэйкаст! В общем вопросы : 1) Как заставить луч срабатывать позднее(С эмитировать полёт снаряда лучом как физ объект ну хотяб приблизительно похожее!) /*Решил!!! С помощью условия и hit.distance!! */
2) Полёт этого снаряда по отражённому лучу(Приблизительно представляю и даже кажись нашёл выход =) )!
3) Не знаю возможно луч сделать кривым?(Что-то на подобии параболы) ! /* тестирую формулу (преобразую её в юньке) */
Сообщение отредактировал KolekSDK - Пятница, 11 Ноября 2016, 06:04 |
|
| |
falcoware | Дата: Пятница, 11 Ноября 2016, 05:13 | Сообщение # 8 |
старожил
Сейчас нет на сайте
| KolekSDK, Формула параболы:
S = g*t*t/2 + v0*t;
|
|
| |
KolekSDK | Дата: Пятница, 11 Ноября 2016, 06:02 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| Цитата falcoware ( ) Формула параболы:
S = g*t*t/2 + v0*t;
МММ =) сейчас преобразую!
|
|
| |