Учитывая точку и направление, как получить новую точку, которая находится на расстоянии 1 единицы слева? - PullRequest
2 голосов
/ 05 февраля 2020

Учитывая, что имеем:

  • Точка вектора 3 a в пространстве
  • Направление точки вектора 3 a (нормализовано)

Как чтобы получить новый Вектор3 (b), который находится на расстоянии 1 единицы слева (или справа) от точки a?

Vector3 a = new Vector3(0, 0, 0);
Vector3 direction = new Vector3(0.9417419, 0, 0.3363364);

1 Ответ

2 голосов
/ 05 февраля 2020

Как говорит @Pluto, вы можете использовать перекрестный продукт, чтобы найти его, если у вас есть направление вверх. Однако Unity использует системы для левшей, поэтому (направление X вверх) будет слева. Вы можете использовать минус direction, чтобы найти правую сторону. Например:

Vector3 a = new Vector3(0, 0, 0);
Vector3 direction = new Vector3(0.9417419, 0, 0.3363364);    
Vector3 localUp = Vector3.up;

bool onLeft = true;

Vector3 b = Vector3.Cross(onLeft ? direction : -direction, localUp).normalized + a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...