Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
1

Поворот относительно части объекта

16.11.2018, 10:28. Показов 8586. Ответов 14

Author24 — интернет-сервис помощи студентам
Всем привет. Изучаю Unity3d и столкнулся с такой проблемой.
У меня есть объект (назовем его ФИГУРА), который состоит и нескольких маленьких объектов А, B, C, D. Мне необходимо сделать поворот фигуры относительно объекта А (или нескольких объектов A, B), входящего(входящих) в состав ФИГУРЫ. Присвоил объекту А созданный мною тэг, через который в скрипте я нахожу этот объект для получения координат и сохраняю его в переменную objectA. Во время запуска программы я вывожу координаты объекта А, и они почему-то совпадают с координатами ФИГУРЫ и мой поворот, в конечном итоге осуществляется не относительно объекта А (относительно точки с координатами А), а относительно центра фигуры.
Но если сделать отдельный объект (например, я делал куб), относительно которого аналогично вращал, то вокруг него моя ФИГУРА вращалась нормально.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    public GameObject figura;
    public GameObject objectA;
    public int speedRotation = 3;
    public Vector3 position;
 
    void Start()
    {
        objectA = GameObject.FindGameObjectsWithTag("MyTag");
        figura = (GameObject)this.gameObject;
    }
 
 
    void Update () {
        position = objectA.transform.position;
 
        //Rotate in left
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            figura.transform.RotateAround(position, Vector3.up, 35 * Time.deltaTime);
        }
        //Rotate in right
        if (Input.GetKey(KeyCode.RightArrow))
        {
            figura.transform.RotateAround(position, Vector3.down, 35 * Time.deltaTime);
        }
    }
Помогите, пожалуйста. Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2018, 10:28
Ответы с готовыми решениями:

Поворот объекта относительно другого объекта 2D
Делаю игру с видом сверху и нужно чтобы стрела от лучника вылетала перьями (будем считать, что...

Поворот 2д объекта относительно вектора
Есть вектор направления, есть точка старта и есть объект для поворота. Нужно повернуть объект по...

Поворот объекта
Всем привет. Сделал часы и теперь надо чтобы при увеличении переменной htime, объект sun...

Поворот объекта
Привет, товарищи :). Подскажите мне, как решить мою проблему. Допустим, у меня есть танк, а у него...

14
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
16.11.2018, 12:36 2
Цитата Сообщение от Nikort7 Посмотреть сообщение
и мой поворот, в конечном итоге осуществляется не относительно объекта А (относительно точки с координатами А), а относительно центра фигуры.
По всей видимости они совпадают.
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
16.11.2018, 13:16  [ТС] 3
Да. Это я и имел ввиду, что они совпадают, но не понимаю почему, если у объекта А есть же свои собственные координаты, отличные от координат ФИГУРЫ, не смотря на то, что А входит в состав ФИГУРЫ
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
16.11.2018, 13:24 4
Цитата Сообщение от Nikort7 Посмотреть сообщение
А входит в состав ФИГУРЫ
То есть лежит в дочерних?
Давай-ка скрины с инспектора, с координатами всей фигуры и отдельно объекта А.
0
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
16.11.2018, 14:26 5
Кстати в одной из последних версий Unity, был глюк - координаты дочерних объектов на самом деле показывали координаты родительского объекта. После перезапуска Unity этот эффект пропадал.
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
19.11.2018, 16:20  [ТС] 6
Цитата Сообщение от 1max1 Посмотреть сообщение
Давай-ка скрины с инспектора, с координатами всей фигуры и отдельно объекта А.
В инспекторе выведен список объектов, которые я нахожу по тегу. Все они находятся в составе фигуры.
posPlayer - координаты Фигуры.
posFlanec - координаты объекта, относительно которого хочу повернуть. В данном случае это объект А (пробовал и другие объекты, и брать среднее арифметическую координаты всех объектов списка - все равно результат один и тот же: координаты такие же, как и у фигуры).
Миниатюры
Поворот относительно части объекта   Поворот относительно части объекта  
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
19.11.2018, 16:24  [ТС] 7
уже 2 раза приходило обновление. на всех 3х версиях одна и та же проблема
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
19.11.2018, 16:48 8
Зачем задавать координаты вручную? Ничего не понятно если честно. Опиши задачу в целом, может можно решить ее проще.
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
19.11.2018, 17:07  [ТС] 9
Цитата Сообщение от 1max1 Посмотреть сообщение
Зачем задавать координаты вручную?
координаты вручную не задаются. В скрипте я их нахожу по тегу и вывожу в инспекторе, чтобы отслеживать их.

Цитата Сообщение от 1max1 Посмотреть сообщение
Опиши задачу в целом, может можно решить ее проще.
Задача такая: необходимо повернуть фигуру относительно объекта А, который входит в состав фигуры. То есть, если представить лист бумаги, приколотый к стене кнопкой, то он может крутиться только в месте кнопки. Аналогично я пытаюсь сделать здесь: отверстие от кнопки имеет свои координаты, по тегу я их определяю и относительно этих координат поворачиваю лист.

Я нашел поворот относительно точки. И он работает, если сделать отдельный объект (например куб какой-нибудь, который не входит в состав Фигуры), брать его координаты, и поворачивать Фигуру относительно этих координат. Но мне надо поворачивать относительно дочерних объектов (если это так правильно называется).
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
19.11.2018, 17:30 10
Ну вот, всё работает...
https://youtu.be/HhbvdhfT7ks
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
19.11.2018, 18:16  [ТС] 11
Аналогично делаю, но не работает. Все равно крутится относительно центра всего фигуры и не координат arrayOfObjects[0].

C#
1
2
3
4
    void Update () {
        pos = arrayOfObjects[0].transform.position;
        transform.RotateAround(pos , Vector3.up, 35 * Time.deltaTime);
    }
А может это зависеть от модели? У меня была модель Фигуры, в 3D MAX я ее сохранил в .fbx, после чего уже работал в Unity.

Добавлено через 26 минут
Потому что я создаю кубик, вкладываю его в Фигуру и относительно него у меня все крутится, а относительно объектов Фигуры, которые уже были в ней, нет.
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
19.11.2018, 19:06 12
Видимо пивот на твоем объекте не там, где ты ожидаешь его видеть, посмотри в сцене, где его пивот находится.
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
19.11.2018, 19:14  [ТС] 13
Извини, в терминах не силен пока что. Что подразумевается под словом пивот?

Я сейчас пробую: вставляю пустой объект в фигуру, даю ему тег, и относительно этого пустого объекта он крутится. Но относительно объектов фигуры крутиться не хочет, хотя он их находит по тегу и даже перекрашивает (через скрипт так же). Возможно, какие-то проблемы с моделью, а пихать пустые объекты как-то сложновато постоянно будет, чтобы сделать тот или иной поворот или перемещение.
0
3353 / 1769 / 1025
Регистрация: 26.10.2018
Сообщений: 5,198
19.11.2018, 19:17 14
https://www.google.com.ua/sear... e&ie=UTF-8
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 21
21.11.2018, 13:22  [ТС] 15
Понял тебя. Посмотрел в 3D Max. Там только один пивот на всю модель. Причем если выбирать отдельный объект фигуры, то в проекциях он выделяется, но пивота нет.
0
21.11.2018, 13:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2018, 13:22
Помогаю со студенческими работами здесь

Поворот объекта
ДОбрый день! Как сделать поворот объекта на 90 градусов если установлен канвас. если без канваса...

Поворот объекта за мышью
Как сделать поворот обэкта за мишю? Не получается уже по всякому делал.

Поворот объекта за курсором в 2D
Здравствуйте, знатоки. Дело такое, разрабатываю игру, что-то типо 2D шутера с видом сверху (на...

Поворот объекта в сторону игрока
Делал таким способом public class LookAtPlayer : MonoBehaviour { public Transform target;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru