[1.7.10]Как получить часть модели, по которой ударил игрок

771
5
Можно ли как-то получить часть модели(ModelRenderer(руку, например)) моба, по которому ударил игрок?То есть ударил по руке - получил руку, ударил по голове - голову.
 
2,955
12
Сомневаюсь. Можно такое осуществить, если к каждой части модели припаять коробку(Axis Aligned Bounding Box), хранящую инфу о части (следовательно границы), и при этом сделать так, чтоб удар наносился именно по боксу, а не по всей энтити. У меня пока только такая идея.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
1. Модель - это и есть коробка, превратить её в AABB(достать коорды и размеры) и применить рейтрейсинг.
[merge_posts_bbcode]Добавлено: 31.07.2014 20:07:01[/merge_posts_bbcode]

Вот только без вращения будет.. Ну в таком случае достать коробку как я сказал, прибавить вращение и применить хитрозадую математику, что возможно, подчёркиваю.
 
1,990
18
105
Повернуть легко.
Берем бокс, смещаем в начало координат (т.е. вычитаем самую маленькую координату)
Далее:
x' = cos(angle)*x + sin(angle)*y;
y' = sin(angle)*x + cos(angle)*y;
А потом возвращаем к своим координатам.
 

necauqua

когда-то был anti344
Администратор
1,216
27
172
Проблема в том, что бокс - не кучка координат, бокс - 3 коорды и размеры куба.
Так-что рейтресить нужно самому(чего я не умею).
 
1,990
18
105
Тогда легче повернуть луч.
vlvjKlC.png

Что-то вроде этого. Применяем такое преобразование на луч - получаем вторую картинку, ибо физически AABB все равно такой и есть.
А проверять пересечение луча и бокса кубач уже умеет.
В крайнем случае придется составить 6 уравнений плоскости и уравнение луча и тестить пересечения.
 
Сверху