Четверг, 25 Апреля 2024, 20:01

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » KUPRUM [2]
Результаты поиска
KUPRUMДата: Четверг, 08 Августа 2019, 12:44 | Сообщение # 1 | Тема: Изменение поворота объекта при извлечении из группы
уже был
Сейчас нет на сайте
Хах как всегда самый простой вариант просмотрел, спасибо!)

Добавлено (05 Апреля 2020, 08:43)
---------------------------------------------
Предположим у меня лодка по которой можно ходить и на ней же плавать. При выходе с лодки работает код указанный выше, а при входе на нее это не помогает. Персонж резко меняет направление когда становится дочерним. Есть ли какие то решения этой проблемы?

Добавлено (05 Апреля 2020, 09:39)
---------------------------------------------
Похоже частично можно решить проблему так:

Код

    Quaternion rotation;
    float y;

    void Update()
    {
        y += Input.GetAxisRaw("Mouse X");

        if (transform.parent)
        {
            transform.localRotation = Quaternion.Euler(0, y, 0) * rotation;
        }
        else
        {
            transform.rotation = Quaternion.Euler(0, y, 0);
        }
    }

    void OnTriggerEnter(Collider other)
    {
        GameObject vr = other.gameObject;
        if (transform.parent == false)
            if (vr.GetComponent<OnTrigger>())
            {
                transform.parent = vr.transform;
                rotation = Quaternion.Inverse(transform.parent.rotation);
            }
    }

    void OnTriggerExit(Collider other)
    {
        GameObject vr = other.gameObject;
        if (vr.GetComponent<OnTrigger>())
        {
            transform.parent = null;
        }
    }
KUPRUMДата: Четверг, 08 Августа 2019, 12:21 | Сообщение # 2 | Тема: Изменение поворота объекта при извлечении из группы
уже был
Сейчас нет на сайте
Доброго времени суток, на 3D сцене есть ряд объектов, которые активно перемещаются, при этом одни могут стать дочерними по отношению к другим. Столкнулся с проблемой связанной с применением Quaternion. Объект, переставая быть дочерним изменяет свою ориентацию в пространстве(полагаю это происходит из-за изменения системы координат с локальных на глобальные и наоборот). Тоже самое происходит при включении его обратно в группу. Вращение объектов происходит через Quaternion.Euler. Кто-то сталкивался с подобным?

Изменение transform.localRotation на transform.rotation не подходит так как родительский объект также активно перемещается в пространстве.

Код упрощен C#

Код

void Update()
{
       float y += (Input.GetAxisRaw("Mouse X"));
       transform.localRotation = Quaternion.Euler(0, y, 0);
}

void OnTriggerStay(Collider other)
{
       GameObject vr = other.gameObject;
       if (transform.parent==false)
           if (vr.GetComponent<OnTrigger>())
                transform.parent = vr .transform;
}

void OnTriggerExit(Collider other)
{
        GameObject vr = other.gameObject;
        if (vr.GetComponent<OnTrigger>())
            transform.parent = null;
}
Форум игроделов » Записи участника » KUPRUM [2]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг