|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
||||||
Поворот объекта вокруг точки с заданной постоянной скоростью29.06.2021, 23:43. Показов 5820. Ответов 12
Здраствуйте! Пытаюсь сделать поворот объекта вокруг заданой точки. Поворот должен быть строго 90* (как и вокруг объекта, так и угол поворота самого объекта который поворачивается). Причём, если сейчас объект на начальной точке допустим 0*, нажав первый раз на стрелку вправо объект поворачивается вокруг точки направо, и даже если объект не докрутился к заданой точке (90* относительно точки указаной как ось вращения), а я нажал кнопку влево, то он должен вернуться в позицию 0*. Проблема остановить объект в заданой точке, в которой угол поворота оси будет ровно 90*, и угол поворота самого объекта вокруг его центра 90*. Вот моя реализация (на неё можно и не смотреть):
0
|
||||||
| 29.06.2021, 23:43 | |
|
Ответы с готовыми решениями:
12
Изобразить правильный многоугольник, вращающийся вокруг заданной точки с постоянной угловой скоростью Поворот вокруг заданной точки Поворот фигуры вокруг заданной точки |
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 30.06.2021, 01:04 | |
|
А что должно быть если 2 раза вправо нажать?
Если тебе нужны фиксированные повороты ты можешь создать пустышку, под нее кинуть объект и крутить пустышку к заданным углам через quat.lerp.
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
|
| 30.06.2021, 02:08 [ТС] | |
|
1max1, Два подряд поворота, с недостающим временем для поворота не будет, так что исключаю такой поворот событий. Можно подробней? Просто .RotateAround работает так ка мне нужно. Просто не могу понять, как всё таки докрутить в нужный угол объект. Моя мысль — сделать условие в цикле с поворотом, которое сравнивает нужный угол наклона Объекта с тем, что мы имеем, и недостающую разницу компенсировать после цикла. НО позиция была (5;0), а стала (0.1;-4,9) (к примеру), так как я докрутил угол самого объекта, а не угол вращения объекта вокруг заданной точки
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
||||||
| 30.06.2021, 02:21 | ||||||
|
Докрутить не проблема)
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
|
| 30.06.2021, 02:42 [ТС] | |
|
1max1, спасибо! Пример поможет, но как быть с ситуацией, объект у нас на 90* от точки вращения. Нажимаем кнопку вправо, объекту нужно переместиться на 180*. Он уже на пол пути, 135*. И я нажимаю кнопку влево, Тоесть обратно на 90*. Как достать вот эту разницу? 135* на которые уже вращался, отнять нужные 90* и получить эти 45* на которые нужно повернуться?
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
||||||
| 30.06.2021, 13:24 | ||||||
Сообщение было отмечено DALVROT как решение
Решение
1
|
||||||
|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
|
| 01.07.2021, 09:52 [ТС] | |
|
1max1, Спасибо! Именно то что нужно было. Но координаты объекта странно изменяются. Допустив сделал шаг влево, шаг вправо (Тоесть вернулся на начальную позицию), координаты начальные были (х: 5; y: 0), и стали (x: 5; y: -5). Визуально ничего не изменилось, и если сделать у координату 0, то тоже ничего не меняться. Но странно всё таки, не помешает ли это в дальнейших операциях с этими объектами?
Добавлено через 22 минуты 1max1, Причём каждый раз координаты разные)
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 01.07.2021, 11:39 | |
|
DALVROT, не понимаю о чем ты, если нажать влево, потом право, все вернется как было. И если ты вращаешь на 90*, то (x: 5; y: -5) недостижимое значение.
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 01.07.2021, 17:52 | |
|
Ошибка точности float, число приближенное к нулю. Да, не очень хорошо, но от этого не избавиться, так же как и вместо 5 у тебя будет 4.9999
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
||||||
| 01.07.2021, 19:05 [ТС] | ||||||
|
1max1, Да я понял, думаю (очень надеюсь), что потом это не помешает. Кстати такой вопрос, раз мне попался очень умный человек, Есть ли у объекта локальные вектора? Что бы при повороте объекта вокруг своей оси, направление его движения не менялось? Или прийдется делать костыли со сменой направления вектора движения?
Добавлено через 27 минут 1max1, Разобрался с локальными векторами, оказалось всё намного проще (transform.right), если платформа расположена горизонтально, при
0
|
||||||
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 01.07.2021, 19:12 | |
|
Если не движется значит что-то мешает. Может ты зафиксировал позицию в Rigidbody Constraints? Или другой скрипт на это влияет или коллайдер, много причин...
0
|
|
|
0 / 0 / 0
Регистрация: 29.06.2021
Сообщений: 20
|
|
| 01.07.2021, 19:31 [ТС] | |
|
1max1, Именно так... Забыл что заблокировал. Случайно наткнулся на тему где ты отвечал на такой же вопрос, и решил покопаться. Спасибо огромное!
0
|
|
| 01.07.2021, 19:31 | |
|
Помогаю со студенческими работами здесь
13
Переделать грибок на снеговика(поворот вокруг заданной точки) Поворот объекта относительно заданной точки OpenGL ES 2.0 Изобразить равнобедренный треугольник, вращающийся с постоянной угловой скоростью вокруг своей высоты
Поворот объекта относительно заданной точки на заданный угол Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|