Суббота, 23 Ноября 2024, 12:20

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
как определить угол вхождения относительно нормали?
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;


МММ =) сейчас преобразую!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг