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

Движение курсора по часовой стрелке

12.09.2024, 22:17. Показов 214. Ответов 3

Author24 — интернет-сервис помощи студентам
Всем привет, может кто знает как решить эту проблему, не могу найти нигде ответа как отловить двигается ли объект вокруг своей оси по часовой стрелке или против, думал смогу отследить по изменению угла, если уменьшается то по часовой, а если наоборот - то против, написал простой код для движения стрелки:

C#
1
2
3
4
5
        Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 direction = mousePosition - (Vector2)cashedTransform.position;
        float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
 
        cashedTransform.rotation = Quaternion.Euler(0, 0, angle);
И вставил в OnMouseDrag, но когда поворачиваешь объект на половину в любую сторону из-за Mathf.Atan2 угол прыгает и не идёт дальше 180, повернул на 180 градусов - дальше угол станет отрицательным -180 и будет уменьшаться.

Никак не могу придумать другого способа адекватно поворачивать объект вокруг центра и при этом отловить направление вращения, помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2024, 22:17
Ответы с готовыми решениями:

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

Реализовать движение круга по часовой стрелке и против часовой стрелки по траектории окружности
Реализовать движение круга по часовой стрелке и против часовой стрелки по траектории окружности.

Движение фигуры по часовой стрелке
Ребят что сделать чтобы фигура делала движение по кругу по часовой стрелке?? Если можно с примером...

Реализовать движение круга по часовой стрелке
Помогите реализовать движение круга по часовой стрелке и против часовой стрелки по траектории...

Имитация часов. Движение по часовой стрелке
Здравствуйте. Помогите пожалуйста. Дело вот в чем, нужно сделать имитацию часов, пока первая...

3
11 / 8 / 3
Регистрация: 09.06.2024
Сообщений: 44
12.09.2024, 23:32 2
Первое что пришло на ум - это записывать и сравнивать предыдущий и текущий угол.
0
1022 / 242 / 136
Регистрация: 30.07.2022
Сообщений: 1,600
Записей в блоге: 4
13.09.2024, 00:11 3
Yan Kolosov,чтобы определить, вращается ли 2D объект по часовой стрелке или против часовой стрелки, можно использовать угловую скорость объекта.
Угловая скорость может быть положительной или отрицательной, и это зависит от направления вращения.

дальше сами погуглите.
0
3505 / 986 / 85
Регистрация: 21.04.2013
Сообщений: 7,242
13.09.2024, 00:28 4
Yan Kolosov,

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using UnityEngine;
 
public class CursorRotationChecker : MonoBehaviour
{
    private Vector3 previousCursorPosition;
    private Camera mainCamera;
 
    void Start()
    {
        mainCamera = Camera.main;
        previousCursorPosition = Input.mousePosition;
    }
 
    void Update()
    {
        Vector3 currentCursorPosition = Input.mousePosition;
 
        // Преобразуем позицию курсора в мировые координаты
        Vector3 worldCursorPos = mainCamera.ScreenToWorldPoint(new Vector3(currentCursorPosition.x, currentCursorPosition.y, mainCamera.nearClipPlane));
        Vector3 previousWorldCursorPos = mainCamera.ScreenToWorldPoint(new Vector3(previousCursorPosition.x, previousCursorPosition.y, mainCamera.nearClipPlane));
 
        // Находим вектор направления от объекта до курсора
        Vector3 directionToCursor = worldCursorPos - transform.position;
        Vector3 previousDirectionToCursor = previousWorldCursorPos - transform.position;
 
        // Вычисляем угол между предыдущим и текущим направлениями
        float angle = Vector3.SignedAngle(previousDirectionToCursor, directionToCursor, Vector3.up);
 
        if (angle > 0)
        {
            Debug.Log("Движение против часовой стрелки");
        }
        else if (angle < 0)
        {
            Debug.Log("Движение по часовой стрелке");
        }
 
        // Обновляем предыдущую позицию курсора
        previousCursorPosition = currentCursorPosition;
    }
}
0
13.09.2024, 00:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.09.2024, 00:28
Помогаю со студенческими работами здесь

Движение лепестков крутились по часовой стрелке
Мне надо что бы это ромашка, точнее ее лепестки крутились по часовой стрелке! Как сделать не пойму:...

Движение окон по часовой стрелке, не перекрывающих друг друга
В общем, есть такой код. Вроде работает, но если можно ещё больше упростить, подскажите как. Окно...

CSS переход или анимация? Движение по часовой стрелке.
Доброго времени суток! Задача такая. Необходимо что бы линия (назовем ее аналог часовой стрелки),...

Угол часовой стрелки между лучом направленным вверх и часовой стрелкой в направлении движения по часовой стрелке
Даны два елых числа. Первое из них – количество часов, второе – количество минут. Составить...

Движение шарика вдоль прямоугольника,(по касательной) по часовой стрелке.не могу написать поворот по ребру
Движение шарика вдоль прямоугольника,(по касательной) по часовой стрелке.не могу написать поворот...

Как сделать анимацию для картинок: одна должна идти по квадрату по часовой стрелке, а другая - против часовой?
Помогите пожалуйста, как сделать анимацию для картинок: одна должна идти по квадрату по часовой...


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

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