Я знаю, как проверить угол между raycas (Vector3.Angle (hit.normal, -transform.forward)), но моя проблема в том, что он всегда возвращает меньший угол (я знаю, что это математически правильно, это просто не то, что я хочу). Я использую его, чтобы определить, на какой стороне должен стоять мой автомобиль. Трудно объяснить, поэтому я буду использовать картинку: Эти два raycasts оба будут возвращать одинаковый угол, и я хочу, чтобы один на 45 * и другой -45 *. На самом деле мне не нужно точное значение, 1 и -1 тоже хорошо (мне нужно знать только ту сторону, а не точный угол).Как проверить угол между raycast и поверхностью?
ответ
Я не совсем уверен, если это поможет вам с вашей проблемой, но, глядя на вашем примере это может работать для вас:
Когда смотришь на модифицированном картину, я добавил вектор U
и назвали красные векторы, где L
(и R
) и указатель со стены (точка попадания, обозначенная вертикальными линиями) к прямоугольнику. Вектор U
- это вектор фиксированного направления, связанный с вашей стеной (поэтому он не изменяется во время выполнения).
Теперь с L
и U
(или R
и U
), вы можете определить, находится ли луч происхождения за или перед точки попадания, используя скалярное произведение.
В этом примере, что дает:
Vector3.Dot(L, U) < 0
Vector3.Dot(R, U) > 0
Вы могли бы использовать эту информацию, чтобы определить знак для ваших углов.
Отличная идея, но я действительно не знаю, как связать какое-то векторное остроумие моих стен. Вы знаете, как это сделать или это просто математическое решение? –
это может быть довольно легко, если вы выровняете свою модель стены с ее локальной осью взглядов, которая указывает справа (например). используя transform.right, тогда будет дана проекция мирового пространства локальной (в конечном счете повернутой) оси, указывающей вправо. используйте это как ваш вектор U – TheDjentleman
Спасибо! Это решает мою проблему. Если кто-то захочет использовать это, вам придется использовать Vector3.Dot, а не Mathf.Dot. –
- 1. MATLAB - Пересечение между поверхностью и плоскостью
- 2. Разница между поверхностью и текстурой (SDL/general)
- 3. Взаимосвязь между поверхностью и холстом: Android
- 4. Как проверить цель raycast: gameObject.layer или gameObject.tag?
- 5. Угол между вектором и плоскостью
- 6. Как рассчитать угол между часами и часами?
- 7. Единство raycast, на raycast оставить, как? C#
- 8. Поделитесь поверхностью между D2D, DX10, DX11
- 9. Угол между тремя геолокациями
- 10. Угол между 3 точками?
- 11. Угол между тремя вершинами
- 12. Угол между 3-х очками
- 13. box2dweb raycast
- 14. iOS быстрый угол между столомHeader и cell
- 15. OpenCV: вычислить угол между камерой и пикселем
- 16. PyGame Угол между шаром (прямоугольником) и прямоугольником
- 17. Угол между перспективным направлением и широтой/долготой
- 18. Вычислить угол между точкой и 3D-грани
- 19. Расстояние и угол между двумя точками
- 20. Как проверить, если Math.cos (угол) = 0
- 21. Получить угол между точкой и началом координат
- 22. вычислить угол между линией и осью x
- 23. Полилиновые дуги над поверхностью цезия
- 24. Угол между двумя ребрами графа
- 25. PaperJS - угол между двумя точками
- 26. Получить угол между двумя точками
- 27. Понимание метода raycast
- 28. Определить угол между 3 координатами
- 29. Угол между двумя векторами Matlab
- 30. вычислить угол между двумя растрами
это невероятно сложно. Я бы просто нашел другой способ. например, тривиально проверить, находится ли «левый» (или «запад» - или любой другой), что легко. – Fattie
Можете ли вы объяснить это немного больше? Проблема в том, что эту стену можно вращать в любом направлении, поэтому я полагаю, что это не сработает. –