Преобразование глобальных координат в локальные

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Преобразование глобальных координат в локальные

Сообщение Houker 04 май 2023, 15:14

Синтаксис:
Используется csharp
transform.localPosition = Vector3.MoveTowards(transform.localPosition, _target + -transform.up * _multiplier, Time.deltaTime);

Я так двигаю объект по локальным координатам. Но узнал, что -transform.up возвращает в глобальных координатах. Есть идеи как преобразовать их в локальные?
Houker
UNец
 
Сообщения: 5
Зарегистрирован: 04 май 2023, 14:39

Re: Преобразование глобальных координат в локальные

Сообщение waruiyume 04 май 2023, 15:18

InverseTransformDirection Transforms a direction from world space to local space. The opposite of Transform.TransformDirection.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Преобразование глобальных координат в локальные

Сообщение Houker 04 май 2023, 15:29

waruiyume писал(а):InverseTransformDirection Transforms a direction from world space to local space. The opposite of Transform.TransformDirection.

Оно превратило -transform.up в Vector3.down. Или может я его неправильно использовал.
Синтаксис:
Используется csharp
transform.localPosition = Vector3.MoveTowards(transform.localPosition, _target + transform.InverseTransformDirection(-transform.up * _multiplier), Time.deltaTime);
Houker
UNец
 
Сообщения: 5
Зарегистрирован: 04 май 2023, 14:39

Re: Преобразование глобальных координат в локальные

Сообщение waruiyume 04 май 2023, 15:46

_target + -transform.up

Я конечно сильный математик, но мне кажется, что в этом выражении нет смысла. Что вы пытаетесь сделать?
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Преобразование глобальных координат в локальные

Сообщение Houker 04 май 2023, 15:54

waruiyume писал(а):
_target + -transform.up

Я конечно сильный математик, но мне кажется, что в этом выражении нет смысла. Что вы пытаетесь сделать?

Это мое ужасное название для поля. _target = transform.localPosition
Houker
UNец
 
Сообщения: 5
Зарегистрирован: 04 май 2023, 14:39

Re: Преобразование глобальных координат в локальные

Сообщение 1max1 04 май 2023, 16:18

Не понимаю что ты пытаешься сделать, пододвинуть объект к другому объекту при этом используя смещение, бред. Ты уверен что тебе нужно именно локальные координаты? Может сделать просто:
Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards(transform.position, _target, Time.deltaTime);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Преобразование глобальных координат в локальные

Сообщение Houker 04 май 2023, 16:23

1max1 писал(а):Не понимаю что ты пытаешься сделать, пододвинуть объект к другому объекту при этом используя смещение, бред. Ты уверен что тебе нужно именно локальные координаты? Может сделать просто:
Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards(transform.position, _target, Time.deltaTime);

У меня объект двигается внутри другого объекта, поэтому использую локальные координаты. А вообще мне нужно подвинуть объект на одну клетку вниз(отдельно верчу объект). Все работало хорошо до того момента, как я начал крутить родительский объект, там то и понял, что transform.up проводит вектор в локальных координатах, но выдает в глобальных.
Houker
UNец
 
Сообщения: 5
Зарегистрирован: 04 май 2023, 14:39

Re: Преобразование глобальных координат в локальные

Сообщение 1max1 04 май 2023, 16:34

Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards(transform.position, _target + -transform.up * _multiplier, Time.deltaTime);

Попробуй так, это учитывает поворот _target объекта, а следующий код не учитывает:

Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards(transform.position, _target + Vector3.down * _multiplier, Time.deltaTime);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Преобразование глобальных координат в локальные

Сообщение Houker 04 май 2023, 16:40

1max1 писал(а):Попробуй так, это учитывает поворот _target объекта, а следующий код не учитывает:

Синтаксис:
Используется csharp
transform.position = Vector3.MoveTowards(transform.position, _target + Vector3.down * _multiplier, Time.deltaTime);

Не поможет, т.к. мне нужно объект двигать по локальным координатам. У меня объект движется по разным граням куба. Т.е. по x, z; y, z и т.д. Так что мне нужно чтобы объект двигался на одну клетку вниз в зависимости от его направления, т.е. в зависимости от transform.forward
Houker
UNец
 
Сообщения: 5
Зарегистрирован: 04 май 2023, 14:39

Re: Преобразование глобальных координат в локальные

Сообщение 1max1 04 май 2023, 16:56

Если по граням куба, то я бы на вершины повесил бы объекты и с помощью них контролировал движение, при этом не надо париться про поворот тк как объекты будут крутиться с родителем.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27