Страница 1 из 1

Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 24 фев 2017, 14:38
NOVA
Это точно последний вопрос.
Имеется:
public GameObject Aim; Цель
private float AimDistance; Расстояние до цели
Потом Собственно сам объект на котором висит скрипт.

Void Update
AimDistance = Vector3.Distance(AimTarget.transform.position, transform.position);

Как получить точку на векторе transform.forward на расстоянии AimDistance от объекта, на котором висит скрипт?
Вот так можно получить точку на векторе.
Vector3 tpoint = transform.position + transform.forward * n;
Проблема в том, что n!= AimDistance и точка уходит на другое расстояние. В моём случае кратное примерно 10.


PS. Где я видел десятку? А точно в настройках импорта модели. Scalefactor=10. Значит Vector3 tpoint = transform.position + transform.forward *AimDistance/Scalefactor;

Это правильное решение? Мне надо не только для одной модели.

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 24 фев 2017, 15:37
simmetr
Если я правильно понял, то тебе надо юзать магнитуду (длину вектора) - дас из один из членов Vector3. Пусть n= нужный тебе вектор.magnitude

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 24 фев 2017, 15:49
NOVA
simmetr писал(а):Если я правильно понял, то тебе надо юзать магнитуду (длину вектора) - дас из один из членов Vector3. Пусть n= нужный тебе вектор.magnitude

Ой а как это пользовать? Толи я уже не соображаю, в описании примеров нет.
Получается надо получить магнитуду исходного вектора и каким-то образом применить к другому.

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 24 фев 2017, 16:35
simmetr
Vector3 vec_1 = new Vector3( 10f, 4f, 33f);
float n = vec_1.magnitude;
Vector3 vec_2 = vec_1 * n;

где: vec_1 - исходный вектор
n - магнитуда, она же длина вектора
vec_2 - его x y ...... ну ладно путь z - координаты точки, лежащей с кем то на удалении n, от vec_1 в направлении vec_1.

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 24 фев 2017, 16:42
NOVA
Спасибо!

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 25 фев 2017, 12:39
NOVA
Так. Начал ковырять.
Что обнаружил.
Vector3.Distance=Vector3.magnitude //Дистанция от объекта начала вектора до объекта на конце вектора равна магнитуде вектора.

Но при умножении другого вектора на магнитуду, длина получается совершенно другой. Потому что у другого вектора другая магнитуда. Что какбы очевидно.
Поэтому назревает новый вопрос. Как получить вектор типа.
Two.transform.position-One.transform.position c магнитудой равной единице? И получить точку на векторе удалённую на единицу.


Ура дошло.
Vector/Vector.magnitude*Another magnitude
Хвала богам спасибо форуму.

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 25 фев 2017, 13:56
Woolf
Больше тем про вектора, ага..

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 25 фев 2017, 15:38
NOVA
Никогда не думал, что направить ствол поворотом позвонка спины окажется самым трудным занятием в моей жизни. Проблема уже 2 недели решается. Так до конца ещё и не решилась. Но почти то что надо. Как бы не оказалось так, что поворот материнского позвонка на полоборота окажется вообще адом.

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 25 фев 2017, 18:07
waruiyume
Vector/Vector.magnitude = Vector.normalized

Re: Как получить равноудалённую точку на другом векторе?

СообщениеДобавлено: 25 фев 2017, 18:40
NOVA
waruiyume писал(а):Vector/Vector.magnitude = Vector.normalized

Да я уж понял. И перпендикулярные векторы все выровнял. Ну эти Vector3.cross. Но ещё где-то есть косяк.