Определение расстояния до блока, на который направлен entity

Версия Minecraft
1.7.10
126
6
33
Суть проблемы такова: у меня есть entity, rotationYaw и rotationPitch. Мне нужно вернуть расстояние до блока, на который будет направлен "луч направления" от entity. Как вариант можно определять координаты блока, на который он направлен и по Пифагору находить расстояние, но если направить его "в небо", то может быть очень плохо. Ещё как вариант через world.rayTraceBlocks(Vec3, Vec3, boolean); , но я с ним ещё не знаком.
 
1,111
47
420
Крутые кодеры скорее всего меня засмеют конечно, но я бы нашел вектор взгляда игрока, нормализовал бы его и циклом while прошелся бы от точки взгляда по направлению вектора просто высчитывая скалярное произведение. Если б нашел блок или длина вектора от точки взгляда до твоего больше какого то значения break;. Вроде все.
 
1,111
47
420
Можно и не while использовать а for но тогда нужно предварительно расчитать сколько шагов нужно сделать. Кол-во шагов = Константа / на длину нормализованого вектора. Т.к. блоки не всегда полные кубы лучше нормализованый вектор умножить на 0.1. Опять же я тупой как палка и сто проц есть способ работающий быстрее, но я смог придумать только такой.
 

CumingSoon

Местный стендапер
1,634
12
269
А если он пролетит мимо блока? То, очевидно, нужно делить отрезок пополам и етс.
То, что ты описал, кстати, и есть рейтрейсинг.
Опу: найди MovingObjectPosition через rayTrace. Затем расчитай формулу расстояния между векторами. Она выглядит так: sqrt((x1-x0)^2 + (y1-y0)^2, (z1-z0)^2).
 
Последнее редактирование модератором:
Сверху