Как изменить ось вращения в unity
Перейти к содержимому

Как изменить ось вращения в unity

  • автор:

Unity3d как поменять направление Pivot осей.

Использую банальный скрипт для создания «пулек» используя свойство transform.forward
объекта, к которому привязан скрипт.
Читаю документацию что transform.forward это, то что надо чтобы указать направление силы.
Только вот эта ось (синяя) направлена не в ту сторону в которую нужно(и пули летят не в ту сторону), вот как её(эту ось)
повернуть не програмными ссредствами в нужную сторону.
Интернет говорит, что необходимо создавать некий промежуточный объект
с правильным направлением осей и вот его уже и использовать.
Наверня есть в Unity более простой способ.
Без пересоздания объектов, а просто поворотом осей?

Заранее извиняюсь за глупый вопрос.

  • Dan Diamond
  • Постоялец

#1
20:19, 10 июня 2012

Если я правильно понял задачу, есть несколько способов решения:
1. Самый простой. Создаем пустой GameObject, дочерним к нему делаем «снаряд» (Просто перетаскиваем «снаряд» на созданный пустой GameObject). Дальше поворачиваем дочерний «снаряд» так как необходимо.
2. Способ второй, несколько запарнее. Смотрим, куда направлены оси у объекта «снаряд» и в скрипте указываем вектор направления сообразно осям «снаряда». Ну, т.е. если у «снаряда» вперед смотрит ось , то соответственно и указываем transform.right как нужное направление. Ну или Quaternion.Euler (0f, 90f, 0f) * transform.forward (кватернион в этом случае будет указывать поворот вектора перемещения).
3. Способ третий. Работать с изменением mesh-а. Т.е. поворачивать все вертексы меша на определенный угол с помощью editor скрипта. Крайне не рекомендую.
4. Можно еще поискать готовый editor скрипт, который изменяет направление локальных осей объекта и положение пивота. Вроде народные умельцы создавали что-то подобное.

#2
23:29, 10 июня 2012

Спасибо.
Подошел первый способ, и даже без удочерения 🙂

Как изменить центр обьекта для правильного вращения?

У меня есть 3д обьект который я экспортировал из блендера: Блендер После я закидываю его в юнити, и получаю вот такой центр: Юнити Как можно изменить центр, без костылей?

Отслеживать
задан 29 июн 2021 в 11:04
189 4 4 серебряных знака 17 17 бронзовых знаков

Самый простой способ — вложить эту модель в пустой объект и сместить немного вбок. А вращать уже родительский объект.

29 июн 2021 в 17:26

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Сменить позиционирование с Pivot на Center .

Изображение

Отслеживать
ответ дан 29 июн 2021 в 12:43
Alemkhan Utepkaliev Alemkhan Utepkaliev
647 5 5 серебряных знаков 23 23 бронзовых знака

Если вы хотите задать вопрос, то вам следует написать комментарий, а если вы даете ответ, то подразумевается, что у вас есть вся информация для этого. По последнему вопросу очевидно, что вам информации недостаточно, вследтсвие этого вам, опять же, возможно, следует написать комментарий. Здесь вы можете прочитать о том, как дать хороший ответ

29 июн 2021 в 19:22
Только наоборот для меня сработало, спасибо за ответ)
29 июн 2021 в 19:49

@МаксимФисман, ответ был дан, после чего я уточнил автора использовалось ли данное решение. От этого вопроса, суть моего ответа не изменилась, я конкретно указал что и где нажимать в том числе и на скриншоте, я смог дать ответ который помог автору, и голосование против моего ответа это потенциально может не дать возможность другим найти решение схожей проблемы

30 июн 2021 в 13:44

Ну ответ-то только один, возможность никуда не пропадёт, а вот вопрос вы правильно удалили: его все же стоит задавать в комментариях. А уже потом писать ответ. После получения ответа на вопрос. А иначе, как видели уже было -2. Сейчас к ответу нет никаких претензий и я меняю голос против на голос за!

Как можно изменить вращение объекта в Unity3D?

Добрый вечер. Хотелось бы узнать, как можно сделать вращение объекта по оси Y равным повороту по оси Z его родителя.

  • Вопрос задан более трёх лет назад
  • 1011 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 2

theinsaneone

theinsaneone @theinsaneone
Unity Developer

Вызвать данный код на дочернем объекте:

var ownLocalAngles = transform.localEulerAngles; ownLocalAngles.y = transform.parent.eulerAngles.z; transform.localEulerAngles = ownLocalAngles;

Обратите внимание, что это работает с углами Эйлера объекта, а не с кватернионами.

Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
MishkaVNorky @MishkaVNorky

Посмотрите в эту сторону, эту реализацию использовал на голове танка (главное условие было крутить голову локально, по координатам камеры глобальным), что бы она правильно крутилась. Дуло смотрит туда куда смотрит камера, учитывается поворот самого танка. (тут убрана интерполяция).

gun.localRotation = Quaternion.AngleAxis(_cacheCamera.eulerAngles.y - transform.eulerAngles.y, Vector3.up)

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

c#

  • C#
  • +1 ещё

Как заполнить элемент управления Текст в Word из кода с использованием библиотеки Aspose.Words?

  • 1 подписчик
  • вчера
  • 65 просмотров

Как мне исправить вращение импортированной модели?

Некоторые 3D пакеты экспортируют свои модели так, что ось z направлена вверх. Большинство стандартных скриптов в Unity предполагает, что ось y направленна вверх (up) в 3D-мире. Как правило, проще исправить вращение в Unity, чем изменять скрипты для подгонки под такие условия.

Your model with z-axis points upwards

Если это возможно, то перед экспортом модели рекомендуется исправить её в пакете 3d моделирования так, что бы ось y смотрела вверх.

Если это невозможно, вы можете исправить это в Unity, добавив дополнительную родительскую трансформацию:

  1. Создайте пустой GameObject с помощью пункта меню GameObject->Create Empty
  2. Расположите новый GameObject так, чтобы он оказался в центре вашего меша, или в точке, вокруг которой вы хотите вращать свой объект.
  3. Перетащите меш в пустой GameObject.

Теперь ваш меш является дочерним для пустого GameObject’а с правильной ориентацией в пространстве. Теперь, при написании скриптов, которые предполагают, что ось y направлена вверх, добавляйте их на родительский пустой GameObject.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *