Войти
UnityФорумПрограммирование

Детектирование попадания в цель холодным оружием (3 стр)

Страницы: 1 2 3
#30
1:10, 14 окт. 2020

Llevellyn
> так рейкаст то всегда одинаковой длины
длина рейкаста несуществанна - ведь в хите есть точные координаты столкновения, по которым легко считается расстояние, которое успел пролететь луч до столкновения (каждого).

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

судя по докам, анимация обрабатывается до апдейта. т.е. в апдейте, после всех своих рэйкастов, возможно, как-то можно скорректировать положение меча, предотвратив его отрисовку "внутри объекта". например откатить прогресс назад на высчитанное число и попросить юньку проапдейтить положения костей (хз как)...


#31
4:33, 14 окт. 2020

kkolyan
>
> длина рейкаста несуществанна - ведь в хите есть точные координаты столкновения,
> по которым легко считается расстояние, которое успел пролететь луч до
> столкновения (каждого).
ну если посылать рейкасты неопределенной длины, то они воткнутся неизвестно во что (в землю,стены, других персонажей ). Рейкаст должен быть примерно такой длины, которую меч пройдет за 1 кадр.

> возможно, как-то можно скорректировать положение меча, предотвратив его
> отрисовку "внутри объекта".
Я кажись придумал. Надо посылать рейкасты граблями длиной  и направлением как вектор перемещения меча за прошлый кадр, а поскольку мечом машут по дуге, то крайний рейкаст посылать не с самого кончика, а где-то на 10см от него (ну или погнуть как-то направление рейкастов в сторону скругления дуги). Когда рейкаст прилетит в цель - смотреть расстояние от хита до точки начала рейкаста, сравнивать его с пройденным точкой на мече расстоянием за прошлый кадр, и если оно меньше, то пропорционально уменьшать скорость анимации в следующем кадре на 1 кадр (1/30с), после чего прокручивать ее в обратную сторону(для видимости отскока).

#32
4:39, 14 окт. 2020

Llevellyn
> ну если посылать рейкасты неопределенной длины, то они воткнутся неизвестно во что (в землю,стены, других персонажей ). Рейкаст должен быть примерно такой длины, которую меч пройдет за 1 кадр.

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

#33
2:50, 16 окт. 2020

Теперь кидаю рейкасты вперед граблями из меча (просто добавляю к текущей позиции меча расстояние, которое его точки прошли за предыдущий кадр), но это работает не совсем корректно, потому что предсказанная траектория меча становится прямой, а он должен идти какбэ по дуге (из-за чего например рейкасты втыкаются в террейн, тогда как меч в след кадре до террейна на самом деле не достает).
terrain | Детектирование попадания в цель холодным оружием
Есть ли способ как-то узнать более точно положение меча в следующем кадре, если известно его положение в текущем и предыдущем?

Страницы: 1 2 3
UnityФорумПрограммирование